使用场景:点击地图marker弹出自定义信息窗口,信息窗口中含有可以点击的元素,点击后触发自己想要的点击事件(比如弹窗)。
// 第一步,初始化地图
var center = new qq.maps.LatLng(39.984104, 116.307503);
var map = new qq.maps.Map("container", {
center: center,
zoom: 13
});
//第二步,初始marker
var marker = new qq.maps.Marker({
position: center,
map: map
});
//第三步,初始化infoWindow
var infoWindow = new qq.maps.InfoWindow({
map: map,
position: new qq.maps.LatLng(39.984104, 116.307503),
offset: { x: -8, y: -32 }
});
infoWindow.close();
//第四步,标记Marker点击事件
qq.maps.event.addListener(marker, 'click', function() {
infoWindow.open();
infoWindow.setPosition(marker.getPosition());
infoWindow.setContent("<img src=\"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=4143431563,2463070161&fm=26&gp=0.jpg\" class=\"img\"><p id=\"btn\">点击我展示更多内容</p>");//设置信息窗内容
});
// 第五步,信息窗口的内容变更事件
qq.maps.event.addListener(infoWindow , 'content_changed', function() {
// 这里需要加一个延时,给DOM元素的加载预留时间
setTimeout(function() {
// 这里判断一下id为btn的元素是否已经绑定过了点击事件,避免重复绑定导致点击一次触发两次点击事件
var objEvt = $._data($("#btn")[0], "events");
if (objEvt && objEvt.click) return;
// 为信息窗口中自定id为btn的元素绑定点击事件
$('#btn').on('click', function() {
alert('更多内容');
})
}, 400)
});
注:使用时除了引人官方地图api之外还要引入jQuery