我正在尝试创建一个功能来有效地返回一系列基于陆地的坐标。我已经使用谷歌的地理编码器有效地创建了一次性的陆基坐标但是我想将它集成到一个系统中,最终通过使用一个while块创建一个陆基坐标数组,因此调用该函数直到需要确定了陆基坐标的数量。我认为以下应该可以工作,但是,当调用该函数时,页面(使用 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);
}