我将经纬度值的json数组转换为Google Maps使用的形式时遇到问题。我在服务器上从网站上选择的下拉菜单中的两个位置运行查询。服务器返回一个如下所示的json对象:
然后我对该响应运行JSON.parse并将其存储在myObj中。因此,我试图获取两个位置之间的路线。我正在加载这样的路线:
function calculateAndDisplayRoute( directionsService, directionsDisplay ) {
var fromLoc = new google.maps.LatLng(parseFloat(myObj[0].lat),parseFloat(myObj[0].long));
var toLoc = new google.maps.LatLng(parseFloat(myObj[1].lat),parseFloat(myObj[1].long));
console.log(fromLoc);
console.log(toLoc);
directionsService.route( {
origin: {lat: 47.9163329, lng: -97.0467415},,
destination: {lat: 47.9163295, lng: -97.0495925},
从代码中,如果我输入fromLoc,并将toLoc作为我的起点和终点值,则会出现错误消息“ ZERO_RESULTS”。如果像我一样在物理上将坐标键入起点和终点,则指示将正常工作。我最初收到一条错误消息,指出directionService.route始发地和目的地的数据类型不正确。很好,然后我了解到可以将json中的值强制转换为浮点数来满足此属性。通过此编辑,我得到了“ ZERO_RESULTS”属性。
比起通过XMLHttp请求,我得到了响应并将其保存。
编辑:这是console.log在toLoc和fromLoc 上的输出
从实际对象的外观看,toLoc和fromLoc没有任何值。我假设代码中的错误在以下行中:
var fromLoc = new google.maps.LatLng(parseFloat(myObj[0].lat),parseFloat(myObj[0].long));
var toLoc = new google.maps.LatLng(parseFloat(myObj[1].lat),parseFloat(myObj[1].long));
解决方案:
var fromLoc = new google.maps.LatLng(parseFloat(myObj[0].lat),parseFloat(myObj[0].long));
var toLoc = new google.maps.LatLng(parseFloat(myObj[1][0].lat),parseFloat(myObj[1][0].long));