我可以使用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);
}
});
}
但是,当我更改这些值时: -
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与输入的内容完全相同(不使用变量)。
为什么会发生这种情况?
答案 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));