2016-12-23 回答

百度地图在地图中给标注点marker添加后click事件后
marker.addeventlistener("click", function(){})
如何在其他地方自动触发这个marker点击事件?
因为输出marker是一个对象,所以并不能marker.click()
想做的就是如百度地图那样点击左边搜索结果栏右边标注点自动点击一次
感觉api确实不太好用,想出来俩解决方案。
1.可以定义好事件处理函数,想要触发时执行一遍:
marker.addeventlistener('click',func);
function func(){
    alert();
}
// 想要触发时,直接调用func
func();
2.发现marker有一个属性b指向标记dom,但b只在地图加载完成后才有值,否则为null,所以可以在地图加载完成后给给b绑定事件.
map.addeventlistener("tilesloaded",function(){
    marker.b.addeventlistener('click',function(){
    alert();
    });
    /* 使用zepto或jquery
    $(marker.b).on('click',function(){
    alert();
    });
    */
});
// 注意触发时要保证地图加载完成
marker.b.click();
/* 或
$(marker.b).trigger('click');
*/
也可以不等地图加载完,定义marker后就直接绑定,但触发时还是触发marker.b也是可以的。
marker.addeventlistener('click',function(){
    alert();
});
// 注意触发时要保证地图加载完成
marker.b.click();

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐