1
我有1000個LatLngBounds
對象var recBounds = [];
對於它們中的每一個數組,我想創建和顯示一個矩形,得到谷歌海拔服務矩形中心的高度和顏色取決於矩形高程值。處理許多異步請求
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
對象迭代而不是整個陣列傳遞到異步函數,因爲海拔服務只接受約300位置。)
的問題是,海拔服務似乎返回海拔結果的順序不是對應於recBounds
陣列。我猜想,某些緩存位置的高程立即返回並存儲在elevs
數組的頂部。因此,當我嘗試顯示矩形時,例如recBounds[4]
不對應於elevs[4]
的海拔。
我試圖通過LatLngBounds
作爲getElevationForLocations()
函數的參數,稍後使用它來創建一個具有匹配邊界和高程但沒有運氣的新數組。 任何想法如何實現這個?
請提供一個[最小,完整,測試和可讀的示例](http://stackoverflow.com/help/mcve)(包括示例數據以複製問題,需要任何HTML/CSS /外部javascript)。 – geocodezip 2014-09-02 15:18:48
什麼是createRect()? – geocodezip 2014-09-02 15:49:41
您需要處理[OVER_QUERY_LIMIT狀態](http://stackoverflow.com/search?q=%5Bgoogle-maps-api-3%5D+OVER_QUERY_LIMIT)(目前您默默忽略任何不是「OK」的退貨狀態「)。將請求數量減少到可能的最小數量(使用每個請求中可以放置的最大數量的位置)可能是有意義的。 – geocodezip 2014-09-02 16:04:07