从xml创建多边形坐标数组

时间:2013-08-25 12:23:23

标签: javascript jquery google-maps-api-3 geocoding

我在XML文件中有多边形坐标以在Google地图上显示多边形形状,我只想从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,-3.1630325317382812),(51.010961025187314,-3.1359100341796875),(51.043135193868025,-3.063812255859375)

}

1 个答案:

答案 0 :(得分:0)

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

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

生成以下字符串:

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

您可以使用以下脚本转换为数组Google Maps 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/

相关问题