【发布时间】:2018-04-23 11:18:34
【问题描述】:
我正在尝试向谷歌地图添加多个标记。
我的代码:
function createMarkers(myArray) {
var myOptions = {
zoom:6,
center: new google.maps.LatLng(28.704059, 77.102490)
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//shows the object in console with length of 3
console.log(myArray);
//but here length return is 0 so no Entry on FOR Loop
console.log(myArray.length);
for(var x=0;x<myArray.length;x++){
var marker = new google.maps.Marker({
position: myArray[i],
map: map,
title: 'Hello World!'
});
}
}
function initialize(){
var geocoder = new google.maps.Geocoder();
var cityArray = ['Agra','Delhi','Varanasi'];
var myLatLng = [];
for(var i=0;i<cityArray.length;i++){
geocoder.geocode({
'address': cityArray[i]+', India'
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var Lat = results[0].geometry.location.lat();
var Lng = results[0].geometry.location.lng();
myLatLng.push({'lat': Lat, 'lng': Lng});
} else {
alert("Something got wrong " + status);
}
});
}
//console.log(myLatLng);
createMarkers(myLatLng);
}
google.maps.event.addDomListener(window, "load", initialize);
<style>
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
</style>
<div id="map_canvas"></div>
我在对象数组中得到了 latitute 和 logitude。现在我想在 createMarkers(myLatLng) 函数中对其进行迭代。但在这个函数中,我可以将此对象记录到控制台并显示长度为 3 。但是当想要获得它的循环长度时,它总是返回 0;
【问题讨论】:
-
当你执行 createMarkers(myLatLng); ,数组未填充。这是一个异步操作,在执行geocode()方法的callbacks时填充数组。
-
谢谢我解决了..
标签: javascript jquery google-maps