谷歌地图信息窗口未从变量加载内容
Google map Infowindow not loading content from var
我需要帮助让信息窗口显示来自位置的值[i][0]
位置[i][1]对于地址值工作得很好,但我希望能够从var"位置"为信息窗口中的每个标记设置自定义标题。
我可以定义一个 var 来设置内容和信息窗口的工作方式,但每个标记都是一样的,而不是从 var"位置"中提取
任何帮助不胜感激!
function initialize() {
geocoder = new google.maps.Geocoder();
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(
document.getElementById("map_canvas"),
myOptions);
setMarkers(map, locations);
}
var locations = [
['Bondi Beach', '798 9th Ave, New York, NY', 4],
['Coogee Beach', '42 E 29th St, New York, NY', 5],
['Cronulla Beach', '56 W 25th St, New York, NY', 3],
];
function setMarkers(map, locations) {
var infowindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
var marker, i;
for (var i=0; i<=locations.length; i++) {
geocoder.geocode({'address': locations[i][1]}, function(results, status) {
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.open(map, marker);
infowindow.setContent(locations[i][0]);
}
})(marker, i));
bounds.extend(marker.getPosition());
map.fitBounds(bounds);
})
}
}
正在发生的事情是点击事件侦听器正在获取i = 3
(循环结束后 i 的最后一个值),因此由于这种未定义的状态,没有出现 InfoWindow。
由于引入了地理编码器,因此外部for
循环在单击侦听器获得分配给它们的函数之前完成。因此,需要另一个位于地理编码之外的函数范围包装器,以在侦听器中保留正确的 i 值。
function setMarkers(map, locations) {
var infowindow = new google.maps.InfoWindow();
var bounds = new google.maps.LatLngBounds();
var marker, i;
//CHANGED REMOVED EQUALS SIGN
for (var i=0; i<locations.length; i++) {
//ADDED
(function(i) {
geocoder.geocode({'address': locations[i][1]}, function(results, status) {
marker = new google.maps.Marker({
position: results[0].geometry.location,
//REMOVED COMMA
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
//CHANGED ORDER
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
bounds.extend(marker.getPosition());
map.fitBounds(bounds);
});
// ADDED
})(i);
}
}
相关文章:
- 将Json作为变量加载到jsTree中
- 重新加载页面时Javascript变量发生变化
- 在ES6中加载SASS变量
- 通过加载函数发送一个变量
- Javascript - 加载函数运行时未定义的变量
- 如何加载一次模型并将其存储到变量中
- 浏览器's将AngularJS变量加载为URL
- 使用Jquery在页面加载上测试php会话变量
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- 如何将标头中的全局变量加载到外部Javascript FIle中
- 如何使用网址将html页面变量加载到python变量中
- 如何在CasperJS脚本中通过get-int变量加载JSON
- 从 php 和 onchange 变量加载 JavaScript
- 如何将变量加载到 .search 中
- 根据变量加载特定的 SVG
- 谷歌地图信息窗口未从变量加载内容
- 如何在从本地存储中的变量加载页面时设置基于 UL 的下拉列表的值
- 如何将vb.net变量加载到javascript中
- 从jQuery中的动态变量加载数据
- 如何将 PHP 变量加载到操作表单帖子中