Javascript 谷歌地图-如果有多个标记,则在标记中显示地址
我正在使用Javascript 谷歌地图-如果有多个标记,则在标记中显示地址,javascript,asp.net,google-maps,google-maps-api-3,geocoding,Javascript,Asp.net,Google Maps,Google Maps Api 3,Geocoding,我正在使用googlemapapi3根据用户输入在地图上绘制标记。我从数据库中获得了基于邮政编码的地址,并正确地发送了它。我正在使用geocoder将地址转换为latlong,同样正确。地图也按需要显示,但当我试图向用户显示哪个标记代表什么地址时,我的问题就开始了,我使用标记的title属性来执行此操作,但它显示的是每个标记上多个数组中的最后一个地址。我的剧本是 var markers = response.d.split('^^'); //var markers = [
googlemapapi3
根据用户输入在地图上绘制标记。我从数据库中获得了基于邮政编码的地址,并正确地发送了它。我正在使用geocoder
将地址转换为latlong
,同样正确。地图也按需要显示,但当我试图向用户显示哪个标记代表什么地址时,我的问题就开始了,我使用标记的title
属性来执行此操作,但它显示的是每个标记上多个数组中的最后一个地址。我的剧本是
var markers = response.d.split('^^');
//var markers = ["Goregaon, Mumbai", "Malad, Mumbai"];
var latlng = new google.maps.LatLng(51.474634, -0.195791);
var mapOptions1 = {
zoom: 14,
center: latlng
}
var geocoder = new google.maps.Geocoder();
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions1);
for (i = 0; i < markers.length; i++) {
var data = markers[i];
// Geocoder area
geocoder.geocode({ 'address': data }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: data
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
我试过了
var infoWindow = new google.maps.InfoWindow({ content: distanceArray[j];
j++;
});
显然,它不起作用:(地理编码器是异步的。因此,您的for
循环在地理编码器得到响应之前结束。您可以使用另一个变量,该变量在地理编码器每次返回结果(或错误)时递增,并使用它引用正确的标记
数组值
var j = 0;
for (var i = 0; i < markers.length; i++) {
// Geocoder area
geocoder.geocode({
'address': markers[i]
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: markers[j]
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
//Increment variable here
j++;
});
}
var j=0;
对于(var i=0;i
这是因为地理编码器是异步的。您的for
循环在地理编码器响应之前结束,因此data
的值将始终是最后一个值。如果您对响应格式的地址没有问题,那么这当然更容易。答案已得到赞赏和测试,它值为+1,但很抱歉,我找到了替代值lready所以不接受,诚实:PI对InfoWindow应用了相同的东西,但它给出了不可分割的语法“[”错误代码在哪里?如果您的解决方案有效,为什么不在信息窗口中使用相同的解决方案呢?我的解决方案有效,因为google map将格式化的_地址
字段设置为标题
,这里我没有类似的内容。我的代码更新有问题。拜托,我们无法为您调试所有代码!您是否登录distanceArray
在什么地方?我们甚至不知道你在那里放了什么以及它是什么样子。使用console.log()
和你的javascript控制台。我在你的另一个问题上给了你同样的建议。
var j = 0;
for (var i = 0; i < markers.length; i++) {
// Geocoder area
geocoder.geocode({
'address': markers[i]
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: markers[j]
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
//Increment variable here
j++;
});
}