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。

posted @ 2020-11-11 14:15  ShineLe  阅读(2306)  评论(0编辑  收藏  举报