谷歌地图多段线阵列从XML

Google Map Polyline Arrays from XML

本文关键字:XML 阵列 段线 谷歌地图      更新时间:2023-09-26

在我的javascript代码中,每隔x秒,我就会从XML中获得一个变量"polys",具有不确定数量的坐标对,如下所示(我省略了一些变量):echo.php

<markers>
<marker iph="ce987" polys="[40.66645296,-0.22793904],[39.66973274,0.21806265]"/>
</markers>

Javascript代码:

        function processXML(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        //clear markers before you start drawing new ones
        resetMarkers(markersArray)
        for (var i = 0; i < markers.length; i++) {
            var idp = markers[i].getAttribute("idp");
            var polys = markers[i].getAttribute("polys");
            var genpolys = [];
            var flightPath = new google.maps.Polyline({
              path: genpolys,
              geodesic: true,
              strokeColor: '#FF0000',
              strokeOpacity: 1.0,
              strokeWeight: 2,
              map: map
            });
            markersArray.push(marker);
        }
        setTimeout(function() {
            downloadUrl("echo.php", processXML);
        }, 19000);
    }

而且,我需要生成一个?数组?与coordenates,像这样:

var genpolys = [
    new google.maps.LatLng(40.66645296,-0.22793904),
    new google.maps.LatLng(39.66973274,0.21806265)
  ];

我的javascript水平太低,所以我不知道自动生成这个变量的坐标对数量不确定。然后在"折线"内的"路径"中使用

有人能帮我吗?如有任何建议,我们将不胜感激!非常感谢。

试试这样的方法。(我知道这不完全正确,但可能会给你一个想法。我稍后会尝试编辑。)

function processXML(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    //clear markers before you start drawing new ones
    resetMarkers(markersArray);
    for (var i = 0; i < markers.length; i++) {
        var idp = markers[i].getAttribute("idp");
        var polys = markers[i].getAttribute("polys");
        var genpolys = [];
        var json = JSON.parse('{"polys":['+polys+']}');
        for(var coord in json.polys){
            genpolys[coord] = new google.maps.LatLng(json.polys[coord][0],json.polys[coord][1]);    
        }
        var flightPath = new google.maps.Polyline({
        path: genpolys,
        geodesic: true,
        strokeColor: '#FF0000',
        strokeOpacity: 1.0,
        strokeWeight: 2,
        map: map
        });
        markersArray.push(marker);
    }
    setTimeout(function() {
        downloadUrl("echo.php", processXML);
    }, 19000);
}

我希望这能帮你弄清楚。我改编了这个页面的答案:如何在谷歌地图上动态绘制多段线