百度地图API中实现标记功能,一种是使用覆盖物中的Marker来直接实现,这么用的好处是可以直接使用官方2.0提供的各种接口,但是一些复杂需求实现起来不免有些繁琐,比如鼠标跟随的式样修改,单击后的式样变更等等。
另外一种选择是使用1.2接口中提供的MarkerTool开源库,这个现实标记功能基本是够用了(http://developer.baidu.com/map/index.php?title=open/library)
但在实现标注添加后的单击事件监听时需要对源码进行适当的修改,例如实现标记图标的click事件监听
想象中应该是这样:
mkrTool.addEventListener("click", function(e) { alert("test"); });
实际上,由于MarkerTool的实例在添加的单击事件后就会将click事件移除掉,并且只是针对map对象的操作,所以实际的修改点应该是源代码MarkerTool.js中的_clickHandler方法,如下:
var mkr = new BMap.Marker(pt, {icon: me._opts.icon}); //此处增加Marker监听 mkr.addEventListener("click", function(e) { alert("test"); }); me._map.addOverlay(mkr);