我使用基于服务器的地理编码对一些硬编码地址进行了地理编码:
for (var x = 0; x < addresses.length; x++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) {
var lat = data.results[0].geometry.location.lat;
var lng = data.results[0].geometry.location.lng;
latlng = {lat: lat, lng: lng};
markerLocations.push(latlng);
//}
for (var b=0; b < markerLocations.length; b++)
{
markers.push(new google.maps.Marker({
position: new google.maps.LatLng(markerLocations[b].lat, markerLocations[b].lng),
map: map,
}))
};
});
}
Hardcoded Adresses:
var addresses = [
['Hamburg'],
['The Grand Bhagwati,ahmedabad'],
['Global Pagoda Road, Gorai Island, Borivali West, Mumbai, Maharashtra'],
['583 Orchard Rd, B1-25, Singapore'],
['Norway, Oslo']
];
我现在的问题是我的数组成倍增加,因为插入了2个for循环。我想在lat的最后得到一个输出,只用lng 1次,而不是相同的lat / lng坐标3或4次。
答案 0 :(得分:0)
问题在于,每个循环都会从markerLocations
数组中再次添加所有标记。您可以使用一个简单的函数来解决此问题,如下所示 -
for (var x = 0; x < addresses.length; x++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+addresses[x]+'&sensor=false', null, function (data) {
var lat = data.results[0].geometry.location.lat;
var lng = data.results[0].geometry.location.lng;
latlng = {lat: lat, lng: lng};
addMarker(latlng);
});
}
function addMarker(latlng) {
var marker = new google.maps.Marker({ position: new google.maps.LatLng(latlng.lat, latlng.lng),
map: map }));
markers.push(marker);
}
希望这有帮助!