Я уже несколько раз видел этот вопрос здесь, но ответы не совсем применимы к моему делу.
Я использую объект 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 меняется. Однако я не несу ответственности за то, что возвращает Google Api в отношении объекта Polygon.
Есть ли способ получить долготу и широту, не зная ключа? Есть идеи, как перебирать мои полигоны, не опасаясь, что они сломаются через несколько недель?
Большое спасибо
Предположим, у вас есть метод 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);
}
Я не могу использовать методы getLat() для строки json, потому что, очевидно, она содержит только строки. Вместо этого мне нужно создать новую структуру данных для моей переменной «данные», которая содержит обработанные данные вместо feature.getPath().
Вот с чем мне нужна помощь. Какова структура этой новой структуры данных?
Я заметил, что есть метод google.maps.geometry.encoding.encodePath(). Но мне нужно иметь возможность декодировать его на стороне сервера.