将JSON转换为latlng坐标

时间:2019-05-08 21:47:18

标签: javascript ajax google-maps directions

我将经纬度值的json数组转换为Google Maps使用的形式时遇到问题。我在服务器上从网站上选择的下拉菜单中的两个位置运行查询。服务器返回一个如下所示的json对象: enter image description here

然后我对该响应运行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 enter image description here上的输出

从实际对象的外观看,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));

0 个答案:

没有答案