我試圖創建一塊功能來有效地返回一組地基座標。我曾使用Google的地理編碼器有效地創建一次性地面座標,但是我想將它集成到一個系統中,最終通過使用一個時間塊創建一系列基於陸地的座標系,所以函數被調用直到必要條件確定陸基座標的數量。我認爲下面的代碼應該可以工作,但是當函數被調用時,頁面(使用JSFiddle)會崩潰。使用地理編碼返回地面座標數組的問題
我對此感到茫然,因爲我相信每次找到基於位置的座標時都應該減少數字,如果找不到該座標,則會調用該函數直到找到一個(這將在未來的某個時間點)。
任何指導,將不勝感激。公共小提琴是http://jsfiddle.net/grabbeh/sajfb/
var map;
var coords = [];
var geocoder = new google.maps.Geocoder();
window.onload = function() {
center = new google.maps.LatLng(40.717, -74.006);
var options = {
zoom: 1,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), options);
//randomLandBasedCoords(2, function(coords){
// addMarkersToMap(coords);
//});
};
function addMarkersToMap(places) {
for (var i = 0, j = places.length; i < j; i++) {
placeMarker(places[i]);
};
};
function placeMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map,
flat: true,
});
};
function randomLandBasedCoords(number, fn) {
if (number > 0) {
while (number > 0) {
// create random coordinate
var lng = (Math.random() * 360 - 180);
var lat = (Math.random() * 180 - 90);
var randomCoordinate = new google.maps.LatLng(lat, lng);
// call geocoder function to check if coordinate is land-based with a timeout to control flow (maybe)
setTimeout(geocoder.geocode({
location: randomCoordinate
}, function (results, status) {
if (status == "OK" && results) {
var landCoordinate = randomCoordinate;
coords.push(landCoordinate);
number--;
}
}), 250);
}
}
return fn(coords);
}
嘿亞歷克斯,謝謝你。這絕對是一種改進,但仍處於地圖上出現非陸地座標的位置。即使在'數字'爲1的情況下也是如此。總而言之,這讓我感到困惑。 http://jsfiddle.net/grabbeh/jsLZS/是小提琴。 – Michael
實際上,看起來像是我可以根據地理編碼器結果進行微調的東西,據推測,我會接受這是正確的:) – Michael