据我所知,当我不该使用谷歌路线服务拨打电话时,我回到了零结果状态。我已经遍历了调试器,看起来我的值是正确的。我正在使用带有航点的路线服务路线方法。对于起点,我需要使用lat,lng val,因为这种情况一直在变化,但是对于航路点和目的地,我使用完整的地址。航点地址末尾没有国家/地区,但在美国州停留,但目的地的地址中确实有国家/地区值。我认为这不是问题。所有地址都在美国,即使处于相同状态也是如此。
假设输入的值正确,有人看到我的代码有问题吗,以及它是怎么引起的?
function setRoute() {
var wayPts = "";
var cAddress = $("#companyAddr").text();
//slice the zip code off
cAddress = cAddress.slice(0, -6);
var driverDisplay = $("#orders").find('.driverDisplay');
for (i = 0; i < driverDisplay.length; i++){
var directionsService = new google.maps.DirectionsService();
var dlats = $(driverDisplay[i]).find('.dLat');
var dlat = $(dlats[0]).text();
var dlngs = $(driverDisplay[i]).find('.dLng');
var dlng = $(dlngs[0]).text();
dLatLng = new google.maps.LatLng($('#driverLat').text(), $('#driverLng').text());
var stops = [];
var delAddrs = $(driverDisplay[i]).find('.dAddr');
for (var x = 0; x < delAddrs.length; x++) {
var delAddr = $(delAddrs[x]).text();
stops.push({ location: delAddr, stopover: true});
}
var request = {
origin: dLatLng,
destination: cAddress,
waypoints: stops,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
console.trace(status);
var data = response;
//$('#eta').text(response.routes[0].legs[0].duration.text);
}
//else { $('#eta').text("?") }
});
}
}
最佳答案
您创建了这些变量,但是似乎没有使用它们:
var dlats = $(driverDisplay[i]).find('.dLat');
var dlat = $(dlats[0]).text();
var dlngs = $(driverDisplay[i]).find('.dLng');
var dlng = $(dlngs[0]).text();
我认为这里可能存在一个问题:
dLatLng = new google.maps.LatLng($('#driverLat').text(), $('#driverLng').text());
jQuery的
text()
函数返回一个字符串。 Google Maps的LatLng构造函数需要浮点数。现在,这可能正在执行以下操作:dLatLng = new google.maps.LatLng('1.234', '5.678');
您应该通过执行以下操作确保它们是浮动的:
dLatLng = new google.maps.LatLng(parseFloat($('#driverLat').text()), parseFloat($('#driverLng').text()));