谷歌地图API方向 - 问题与变量

时间:2014-05-02 10:21:48

标签: google-maps google-maps-api-3

我可以使用google api显示两点之间的路线,如下所示: -

    if (e.keyCode == 109 && $("#booking-docket").dialog("isOpen")) {

      var pickup = $('#txt-pickup-lat-long').val();
      var destination = $('#txt-destination-lat-long').val();

      alert(pickup);
      alert(destination);

      var start = new google.maps.LatLng(52.73696,-1.3553244444444);
      var end = new google.maps.LatLng(52.781048888889,-1.2110222222222);
      var request = {
          origin:start,
          destination:end,
          travelMode: google.maps.TravelMode.DRIVING
      };
      directionsService.route(request, function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
          directionsDisplay.setDirections(response);
        }
      });

    }
  • alert(pickup)= 52.73696,-1.3553244444444
  • alert(destination)= 52.781048888889,-1.2110222222222

但是,当我更改这些值时: -

      var start = new google.maps.LatLng(52.73696,-1.3553244444444);
      var end = new google.maps.LatLng(52.781048888889,-1.2110222222222);

于: -

      var start = new google.maps.LatLng(pickup);
      var end = new google.maps.LatLng(destination);

它停止工作,即使拾取和放大的价值destination与输入的内容完全相同(不使用变量)。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

问题是 pickup destination 是字符串,这是jQuery .val()函数返回的内容。

LatLng构造函数需要浮点数。将你的皮卡和目标值包装在parseFloat中,将它们从字符串转换为浮点数。

事实上,由于他们实际上是一个列表,每个列表包含两个项目,因此您首先需要将它们分成两个独立的部分。

var pickup = $('#txt-pickup-lat-long').val();
var pickupLat = pickup.split(",")[0];
var pickupLng = pickup.split(",")[1];
var start = new google.maps.LatLng(parseFloat(pickupLat), parseFloat(pickupLng));
相关问题