从json在地图上绘制PolyLine

时间:2018-03-23 21:32:15

标签: javascript google-maps-api-3

我希望能够在地图上显示折线。 如何从JSON提要中获取索引值并将其拆分值置于其上,以便可以在Google地图上使用?

折线Lat / Lng通过JSON feed&amp ;;提供。分成阵列。

像这样:

  

{ “ID”:13115604, “RCVR”:1, “HasSig”:假 “艾基奥”: “C820D4”, “差”:假, “注册”: “ZK-NZG”, “FSeen”: “/Date(1521839348845)/","TSecs":560,"CMsgs":4003,"Alt":17850,"GAlt":17838,"InHg":29.9080849,"AltT":0,"TAlt":34016 , “呼叫”: “ANZ99”, “纬度”: - 36.35348, “龙”:174.387856, “PosTime”:1521839878181, “互助条约”:假的, “TISB”:假的, “亚精胺”:426.4, “牵引控制系统”: 323.1, “TrkH”:假的, “TTrk”:302.34375, “类型”: “B789”, “铜牌”:“波音公司   787 9“,”Man“:”Boeing“,”CNum“:”37963“,”From“:”NZAA Auckland,New   新西兰“,”至“:”RJAA Narita,日本东京“,”Op“:”Air New   新西兰 “ ”OpIcao“: ”澳新银行“, ”SQK“: ”0222“, ”帮助“:假的, ”VSI“:1792年, ”VSIT“:0, ”世贸中心“:3, ”种“:1,”引擎 “:” 2" , “EngType”:3, “EngMount”:0, “军用”:假的, “凑”:“新   新西兰”, “HasPic”:假的, “有兴趣”:假的, “FlightsCount”:0, “GND”:假的, “SpdTyp”:0, “CallSus”:假的, “ResetTrail”:真正的 “泰爱泰党”:5 , “年”: “2014”, “胶辊”:[ - 36.993294,174.851651,70.0,-36.946243,174.894922,70.0,-36.934499,174.884431,325.0,-36.35348,174.387856,325.0]},

这是多边形线的纬度/经度值:

  

[ - 36.993294,174.851651,70.0,-36.946243,174.894922,70.0,-36.934499,174.884431,325.0,-36.35348,174.387856,325.0]

这是收到的数组中的值索引:

  

[0]最早坐标的纬度[1]最早的经度   坐标[2]最早坐标的时间... [n-3]纬度   最新坐标[n-2]最新坐标的经度[n-1]时间   最新坐标

这是我尝试的但是我一直得到“无法读取未定义的属性'长度”错误。

 var poly;
        var polyOptions = {
          strokeColor: '#ff0000',    
          strokeOpacity: 1.0,   
          strokeWeight: 3    
        }
        poly = new google.maps.Polyline(polyOptions);
        poly.setMap(Map);   

        for(var i=0; i<plane.Cot.length; i++){
            var loc = plane.Cot[i].split(',');
            var path = poly.getPath();    
            path.push(new google.maps.LatLng(loc[0], loc[1]));    
        }

1 个答案:

答案 0 :(得分:0)

我没有完整的工作https://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#isAlive%28%29来测试你的推送途径。但是继续尝试在,分割的这行代码,并在分割中生成两个数组,这是我认为你缺少的,因为它试图为不存在的数组插入一个值,因此&#34;无法读取属性&#39;长度&#39;未定义&#34;。除非您的plane.Cot.length被用于范围之外,否则这是我在没有JSBin的情况下可以解决的唯一错误。此外,并非完全重要,但如果您在将位置拆分为两个阵列之前调用路径,则某些JS代码测试人员会给您一个错误。当然,如果您为路径设置占位符数组,那么当您在此函数结束时调用path时,可以存储poly.getPath() ...这只是为了将来参考。

试试这个:

 var poly;
 var path = [];

        var polyOptions = {
          strokeColor: '#ff0000',    
          strokeOpacity: 1.0,   
          strokeWeight: 3    
        }
        poly = new google.maps.Polyline(polyOptions);
        poly.setMap(Map);   

        for(var i=0; i<plane.Cot.length; i++){
            var loc = plane.Cot[i].split(',', 2);  
            path.push(new google.maps.LatLng(loc[0], loc[1])); 
            poly.getPath();      
        }