如何为谷歌地图v3中的每个标记创建信息窗口
How to create infowindow for each marker in google maps v3?
我想用不同的值创建三个标记。在for循环中,我有以下内容:
var marker = new google.maps.Marker({map: map, position: point, clickable: true});
marker.info = new google.maps.InfoWindow({
content: '<b>Speed:</b> ' + values.inst + ' knots'
});
google.maps.event.addListener(marker, 'click', function() {
marker.info.open(map, marker);
});
我遇到的问题是,当我点击3个标记中的任何一个时,只有创建的最后一个标记的信息窗口弹出。我该怎么解决这个问题?
也许你会发现下面的例子很有用:
var cityList = [
['Chicago', 41.850033, -87.6500523, 1],
['Illinois', 40.797177,-89.406738, 2]
]
function addMarkers()
{
var marker,
i,
infowindow = new google.maps.InfoWindow();
for (i = 0; i < cityList.length; i++)
{
marker = new google.maps.Marker({
position: new google.maps.LatLng(cityList[i][1], cityList[i][2]),
map: map,
title: cityList[i][0]
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(cityList[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
您需要将此代码移出for
循环并放入您从for
循环调用的单独函数中。如果你发布更多的代码,包括循环和循环迭代的数组,我可以给出更具体的建议。
但是作为一个例子:
var places = [
{ lat:1, lng:1, name:'one one' }
{ lat:-1, lng:-1, name:'minus one one' }
];
for( var i = 0, n = places.length; i < n; i++ ) {
addPlace( places[i] );
}
function addPlace( place ) {
// here you have place.lat, place.lng, and place.name to work with
}
相关文章:
- 如何通过解析类信息来使用jQuery创建类
- 如何创建multiselect来显示Django中每个选定项的详细信息
- 如何创建一个脚本,该脚本给定网站列表,它使用其搜索功能来获取信息
- 是否所有面向对象的语言都会在内存中创建大量重复信息
- 使用DOM中的信息创建一个控制器/服务来持久化数据
- Node.js创建一个模块来收集内存(ram)信息
- 如何在HTML中创建一个信息框,显示与悬停SVG路径相关的信息
- 我如何创建一个Chrome应用程序,有效地充当信息亭模式下的启动页面
- 想要在谷歌地图中为标记创建信息窗口
- 为 Google 地图信息框创建自定义关闭按钮
- 在 Backbone.js 中为集合中的一个元素创建详细信息页面
- 如何动态创建集合名称(取决于用户信息)
- Rally sdk 2实用程序用于创建指向详细信息页面/编辑弹出窗口的链接
- 创建可重复的 HTML 表单并从 JS 数组加载信息
- 如何使用php创建应用程序ID后从Facebook获取用户详细信息
- 使用个人信息创建多用户登录系统
- 创建谷歌地图自定义信息窗口的当前方式
- 如何从动态创建的表中删除信息
- 如何为谷歌地图v3中的每个标记创建信息窗口
- 在通过loadGeoJson()加载的特性上创建信息窗口