У меня есть массив 1000 LatLngBounds
объектов var recBounds = [];
Для каждого из них я хотел бы создать и отобразить прямоугольник, получить высоту прямоугольника центра от Google Elevation службы и цвета прямоугольника в зависимости от значение высоты.Обработка много асинхронных запросов
function getElevation() {
elevs = [];
for (i = 0; i < recBounds.length; i++) {
var elevation;
var locations = [];
locations.push(recBounds[i].getCenter());
var positionalRequest = { 'locations': locations }
var elevator = new google.maps.ElevationService();
elevator.getElevationForLocations(positionalRequest,
function (results, status) {
if (status == google.maps.ElevationStatus.OK) {
if (results[0]) {
elevation = results[0].elevation;
elevs.push(elevation);
if (recBounds.length == elevs.length) {
createRect();
}
}
}
})
}
}
(я перебор каждого LatLngBounds
объекта в массиве вместо передачи всего массива асинхронной функции, потому что Elevation служба принимает только около 300 мест.)
Проблемы заключается в том, что служба Elevation кажется для возврата результатов возвышения не в том же порядке, который соответствует массиву recBounds
. Я предполагаю, что высота некоторых кэшированных мест немедленно возвращается и хранится в верхней части массива elevs
. Поэтому, когда я пытаюсь отобразить прямоугольники, например, recBounds[4]
не соответствует высоте elevs[4]
.
Я пытаюсь передать LatLngBounds
в качестве параметра функции getElevationForLocations()
и использовать его позже для создания нового массива с соответствующими границами и высотами, но без везения. Любые идеи, как реализовать это?
Просьба указать [Минимальный, завершенный, проверенный и читаемый пример] (http://stackoverflow.com/help/mcve) (включая примеры данных для репликации проблемы, любой HTML/CSS/внешний javascript). – geocodezip
Что такое createRect()? – geocodezip
Вам необходимо обработать статус [OVER_QUERY_LIMIT] (http://stackoverflow.com/search?q=%5Bgoogle-maps-api-3%5D+OVER_QUERY_LIMIT) (в настоящее время вы молча игнорируете любой статус возврата, который не является «ОК» «). Имеет смысл уменьшить количество запросов до наименьшего возможного числа (используя максимальное количество мест, которые вы можете разместить в каждом запросе). – geocodezip