OpenLayers-Map事件


OpenLayer的Map Event在Event.js文件的OpenLayers.Events中定義。

復制代碼
 1 BROWSER_EVENTS: [  2 "mouseover", //鼠標位於對象或區域上  3 "mouseout", //鼠標移出  4 "mousedown", //鼠標按下  5 "mouseup", //鼠標抬起  6 "mousemove", //鼠標移動  7 "click", //鼠標單擊  8 "dblclick", //鼠標雙擊  9 "rightclick", //鼠標右擊 10 "dblrightclick", //鼠標右鍵雙擊 11 "resize", //調整大小 12 "focus", //獲得焦點 13 "blur" // 14 ],
復制代碼

本文通過定義一個鼠標click事件,來說明Map Event的用法。

1. 定義Event響應函數

1 function onMapClick(e){ 2 // 顯示地圖屏幕坐標 3 var str = "[Screen]:" + e.xy.x + "," + e.xy.y; 4 document.getElementById("screen_xy").innerHTML = str; 5 }

"screen_xy" 是用於顯示鼠標點擊時的坐標數據的div標簽,其定義為:

1 <!--顯示地圖屏幕坐標Div--> 2 <div id="screen_xy"></div>

 

2. 在map上注冊click事件及其響應函數

1 map.events.register("click", map, onMapClick);

 

此時,在地圖上單擊鼠標時,onMapClick就會響應click事件,並在預定義的div控件上顯示坐標。

3.獲取click事件的地圖座標

  前面獲取到只是click事件的屏幕坐標,如要獲取地圖坐標,需要進行轉換。這里擴充onMapClick函數,實現轉換。

復制代碼
1 function onMapClick(e){ 2 // 顯示地圖屏幕坐標 3 var str = "[Screen]:" + e.xy.x + "," + e.xy.y; 4 document.getElementById("screen_xy").innerHTML = str; 5 // 屏幕坐標向地圖坐標的轉換 6 var lonlat = map.getLonLatFromViewPortPx(e.xy); 7 str = "[Map]:" + lonlat.lat + "," + lonlat.lon; 8 document.getElementById("map_xy").innerHTML = str; 9 }
復制代碼

 

map對象的getLonLatFromViewPortPx函數,可以實現將屏幕坐標轉換為地圖坐標。

1 // 添加顯示地圖坐標的Div 2 <div id=“map_xy"></div>

效果如下圖所示。click后,左側顯示屏幕坐標,右側顯示地圖坐標。

 


免責聲明!

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



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