从xml创建多边形坐标数组

Create array of polygon coordinates from the xml

本文关键字:坐标 数组 多边形 创建 xml      更新时间:2023-09-26

我在XML文件中有多边形坐标,可以在谷歌地图上显示多边形形状,我只想从XML中获取它们,需要创建如下数组。

 var triangleCoords = [
                              new google.maps.LatLng(51.055221725218054, -3.1630325317382812),
                              new google.maps.LatLng(51.010961025187314, -3.1359100341796875),
                              new google.maps.LatLng(51.043135193868025, -3.063812255859375)
                          ];

谢谢你的回复。这是下面的代码,它不显示多边形。

var bermudaTriangle;

                        var points = "(51.055221725218054, -3.1630325317382812),(51.010961025187314, -3.1359100341796875),(51.043135193868025, -3.063812255859375)";

                        points = points.substr(1, points.length - 2).split("),(");
                        var triangleCoords = points.map(function (pointString) {
                            var latlon = pointString.split(", ");
                            return { lat: latlon[0], lon: latlon[1] };
                        });

                        // Construct the polygon
                        bermudaTriangle = new google.maps.Polygon({
                            paths: JSON.stringify(triangleCoords),
                            strokeColor: '#FF0000',
                            strokeOpacity: 0.8,
                            strokeWeight: 2,
                            fillColor: '#FF0000',
                            fillOpacity: 0.35
                        });
                        bermudaTriangle.setMap(map);
                    });

XML代码获取坐标。

   $(xml).find('Location').each(function () {

                        var points= $(this).find('Coodinates').text();

//在这里,我将成功地获得积分,但需要创建如上所述的阵列(51.055221725218054,-31630325317382812),(51.010961025187314,-31.359100341796875),(5.1043135193868025,-30.663812255859375)

}

如果我对你的帖子的理解是正确的,这是:

var points= $(this).find('Coodinates').text();

生成以下字符串:

"(51.055221725218054, -3.1630325317382812),(51.010961025187314, -3.1359100341796875),(51.043135193868025, -3.063812255859375)"

你可以用这样的脚本将其转换为一个数组谷歌地图LatLon值:

var points = points.substr(1, points.length-2).split("),(");
var triangleCoords = points.map(function(pointString){
    var latlon = pointString.split(", ");
    return  new google.maps.LatLng(latlon[0], latlon[1]);
});

第一行去掉括号,将字符串拆分为一个数组,每个条目包含一个点的数据。之后的数组映射函数将每个字符串元素转换为LatLng,并将其添加到结果数组中。

我在这里举了一个例子,用一个匿名对象替换谷歌地图LatLng:http://jsfiddle.net/Jsv3x/