我在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)
}
答案 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/