使用参数 (latLng) 调用 calcRoute 时未定义路线 - Google 地图

routes are not defined when calling calcRoute with params (latLng) - Google Maps

我需要在点击时将参数传递给 calcRoute(),我正在做的是:

function calcRoute(source,destt) {
  var start = new google.maps.LatLng(source);
  var end = new google.maps.LatLng(destt);
  var request = {
    origin:start,
    destination:end,
    travelMode: google.maps.TravelMode.DRIVING
  };
  directionsService.route(request, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(result);
    } 
  });
}

点击事件:

$('#go').click(function(){
  var from= "24.942834,67.121237";
  var to = "24.944908,67.124491";
  calcRoute(from,to);
});

返回状态 ZERO_RESULT

当我在 calcRoute() 中硬编码 lat n lng 时工作正常,即

var start = new google.maps.LatLng(24.942834,67.121237);
var end = new google.maps.LatLng(24.944908,67.124491);

感谢您的帮助。

直接字符串不能用作 LatLng 对象,您必须将 "24.942834,67.121237" 转换为 google.maps.LatLng 才能使其工作。

$('#go').click(function(){
          var from= new google.maps.LatLng(24.942834,67.121237);// convert it to latlng object
          var to = new google.maps.LatLng(24.944908,67.124491);
          calcRoute(from,to);
        });

如果你有 "24.942834,67.121237" 那么你可以这样使用它:

var str="24.942834,67.121237";
var latlng=str.split(',')

var to = new google.maps.LatLng(parseFloat(latlng[0]), parseFloat(latlng[1]));