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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM