google map 多 Marker 多个InfoWindow event
来源:互联网 发布:成套报价软件 编辑:程序博客网 时间:2024/04/30 00:40
参考http://code.google.com/intl/zh-CN/apis/maps/documentation/javascript/events.html#EventArguments
Using Closures in Event Listeners
在事件侦听器中使用闭包
When executing an event listener, it is often advantageous to have both private and persistent data attached to an object. JavaScript does not support "private" instance data, but it does support
在执行事件侦听器时,通常可取的做法是将私有数据和持久性数据附加到对象中。JavaScript 不支持“私有”实例数据,但它支持允许内部函数访问外部变量的闭包。在事件侦听器访问通常不附加到发生事件的对象的变量时,闭包非常有用。
The following example uses a function closure in the event listener to assign a secret message to a set of markers. Clicking on each marker will review a portion of the secret message, which is not contained within the marker itself.
下例在事件侦听器中使用函数闭包将加密消息分配给一组标记。点击每个标记都可以看到加密消息的一部分,该消息并未包含在标记自身内。
var map; //全局变量
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var myOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementByIdx_x_x("map_canvas"), myOptions);
// Add 5 markers to the map at random locations
var southWest = new google.maps.LatLng(-31.203405,125.244141);
var northEast = new google.maps.LatLng(-25.363882,131.044922);
var bounds = new google.maps.LatLngBounds(southWest,northEast);
map.fitBounds(bounds);
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
for (var i = 0; i < 5; i++) {
var location = new google.maps.LatLng(southWest.lat() + latSpan * Math.random(),
southWest.lng() + lngSpan * Math.random());
var marker = new google.maps.Marker({
position: location,
map: map
});
var j = i + 1;
marker.setTitle(j.toString());
attachSecretMessage(marker, i);//所以这里传值就不用传map值了
}
}
// The five markers show a secret message when clicked
// but that message is not within the marker's instance data
function attachSecretMessage(marker, number) {
var message = ["This","is","the","secret","message"];
var infowindow = new google.maps.InfoWindow(
{ content: message[number],
size: new google.maps.Size(50,50)
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
View example (event-closure.html)
刚开始写的时候写到一块去了,没有用函数功能,不过目前也不太明白为什么?
而且没有传map的值,后来才发现原来例子里map是全局变量,而我是局部变量。
为什么不能在一起写的原因是,marker它会认为是一个图标,所以总是显示最后一个的,而不是对应的每一个。
- google map 多 Marker 多个InfoWindow event
- google地图多Marker 多infowindow
- [Asp.Net WinForm/Google]在Googel Map上放置多个Marker标记 /API3版
- 在Google Map中显示多个Marker并画出Polygon
- Google Map 自定义infowindow
- google map 自定义infowindow
- google maps V3 给多个marker添加infowindows信息
- 解决google map中点击一个infowindow关闭其他infowindow
- 多个Market共用一个InfoWindow
- 百度地图多个InfoWindow同时展示
- 使用google map显示地图,并标注InfoWindow
- flex 多个站点弹出层 (替代infowindow)
- 百度地图添加多个marker,给marker添加多个信息窗口
- 存在多个marker时,点击第一个marker时,信息框出现在最后
- google map 中marker图标集合(转)
- google map加载多个Overlay内存溢出
- 百度地图创建多个marker和监听事件
- 如何区分多个百度地图marker的点击事件
- 使用springMail发送普通邮件
- (7)线程的周期和线程的同步
- 13.3 线程的生命周期 13.4 线程的同步
- VS2008编译ACE
- HDOJ-4006/(大连网赛1006)- The kth great number 剖析
- google map 多 Marker 多个InfoWindow event
- lua与c++交互篇:char* 中的陷阱,万恶的'/0'结尾
- Power Strings
- 接口设计评估——unix编程艺术学习笔记
- 人在社会混,一定要有些心计
- 面试----java基础
- 多线程 睡眠
- Unix接口设计模式——unix编程艺术学习笔记
- 解决齐博b2b 供应价格为0问题