我已经在这里看到过几次这个问题,但这些回答并不完全适用于我的情况。
我正在使用 google.maps.Polygon 对象来保存在地图上绘制的边界。
后来我使用“getPath”方法并将其添加到 Json 字符串中。
JSON 字符串总是不同的。有时我可以通过以下方式抓住多边形角:
thisShape.data.b[i].kb thisShape.data.b[i].lb
其他时间由
thisShape.data.b[i].Qa thisShape.data.b[i].Ra
等等
似乎随着时间的推移,Json 字符串的键发生了变化。但是,就 Polygon 对象而言,我不负责 Google Api 返回的内容。
有没有办法在不知道密钥的情况下获取经度和纬度?任何想法如何循环我的多边形而不用担心它会在几周内打破?
非常感谢
假设您有一个名为“SavePolygonData”的方法,除其他外,它会创建一个像这样的 Json 字符串:
var allData = {};
$("div.shapes").each(function(){
var id = $(this).attr("id");
var type = id.split('_')[0];
var feature = MapToolbar.features[type+'Tab'][id];
var vertices = feature.getPath();
allData[id] = { color: feature.fillColor, data: vertices};
});
var allDataJson = JSON.stringify(allData);
然后另一种方法在其他地方读取 json 字符串,如下所示:
for (var polyId in allData) {
if (allData.hasOwnProperty(polyId)) {
var thisShape = allData[polyId];
var color = thisShape.color;
var vertices=new Array();
for ( var i=0; i<thisShape.data.b.length; ++i )
{
var coordX = thisShape.data.b[i].kb; //Problem here
var coordY = thisShape.data.b[i].lb; //Problem here
var point = new google.maps.LatLng(coordX, coordY);
vertices[i] = point;
}
var poly = new google.maps.Polygon({
strokeWeight: 2,
fillColor: color,
paths: vertices
});
poly.setMap(map);
}
我不能在 json 字符串上使用 getLat() 方法,因为显然它只包含字符串。相反,我必须为包含已处理数据而不是 feature.getPath() 的“数据”变量创建一个新的数据结构。
这就是我需要帮助的地方。那个新数据结构的结构是什么?
我注意到有 google.maps.geometry.encoding.encodePath() 方法。但我需要能够在服务器端对其进行解码。