Leaflet:Event与Layer类属性、方法
Event
之所以要说Event,是因为很多类都是继承自Layer——Marker、Popup、Tooltip、Path以及继承自Path的Circle、Polyline、Polygon...;而Layer又是继承自Event的。追根溯源我们先看Event类。
Event的作用是当某些事发生在一个对象上时,执行一些响应函数(比如当用户点击map时,就在map对象上触发了'click'事件)。
一个用例:
map.on('click' function(e){ alert(e.latlng); });
Leaflet是用引用响应函数名的来处理响应,所以如果想在处理完一个事件后关闭对该事件的响应,最好不要用匿名函数而采用普通函数的方式:
function onClick(e){...} map.on('click',onClick); map.off('click',onClick);
这样,由于用off关闭了对事件click的响应函数onClick,之后再click就不会用onClick函数进行响应了。
1、方法
//Listener——响应函数 on(<String>type, function )//为事件 type 添加响应函数 function on(<Object> eventMap) //一系列的Type/Listener对,例如{click :onClick , mousemove:onMouseMove} off(<String>type,<Function>fn?)//关闭事件 type 上的响应函数 fn;如果省略fn,则会移除所有与该事件type 相关的响应函数。 off(<Object>eventMap)//以Type/Listener对 的形式关闭事件Type上的响应函数。 off() //关闭所有事件的所有响应函数
Layer(Event)
Map与Layer的区别:一个系统只能有一个Map,而可以有多个Layer对象,比如TileLayer、Polygon...,这些Layer只有addTo(Map)后才会在Map上显示出来。这里把Map翻译为地图可能有点不太合适,所以就采用英文Map了。
子类包括:Marker、Popup、Tooltip、Path以及继承自Path的Circle、Polyline、Polygon...
一个用例:
var Layer =L.marker(latlng).addTo(map); layer.addTo(map); layer.remove();
1、事件
//一般事件 add //当Layer加入到Map中时 remove //当Layer从Map中移除 //Popup事件 popupopen //当与Layer绑定的popup打开时 popupclose //popup关闭时 //Tooltip事件 tooltipopen //与Layer绑定的tooltip打开时 tooltipclose//tooltip关闭时
2、方法
//子类继承的方法 addTo(<Map|LayerGroup>map) //把该Layer加入到Map或者Layer Group中;这个方法很重要 remove() //从该Layer正在活动的Map上移除该Layer removeFrom(<Map>map)//从指定的map上移除Layer(不管该map是不是现在活动的map) removeFrom(<LayerGroup> group)//从指定的LayerGroup上移除Layer //Popup方法 //所有的Layer对象都实现了一些与Popup相关的方法 //一个用例 var layer = L.polygon(latlng).bindPopup('Hi! There!').addTo(map); layer.openPopup(); layer.closePopup(); //此外Popups也将在 该图层被点击时打开;在该图层被移除或者另一个Popup打开时关闭 //Popup方法 bindPopup(<String|HTMLElement|Function|Popup>content , <Popup options>options?)
//为该Layer绑定一个Popup,可选参数option和Popup初始化时的参数一致
unbindPopup() //移除绑定在该Layer上的Popup openPopup(<LatLng> LatLng? ) //在指定坐标处打开该Popup,如果没有设置,就会在默认的位置打开 closePopup() //关闭该Layer上的Popup(如果该Popup是打开的话) togglePopup()//打开还是关闭该Layer上的Popup取决于该Layer现在的状态(还没搞懂该函数的意思) setPopupContent(content)//设置Popup的内容 getPopup()//返回绑定在该Layer上的Popup对象 //Tooltip方法 //与Popup方法完全类似,甚至类似到,你把Popup的方法中的Popup字符替换为Tooltip就变成了了Tooltip方法
需要注意的是,Map上会显示所有openPopup()的Popup。