伴隨著移動互聯網的快速普及,地圖應用成為了人們出行、旅游、生活不可或缺的一部分。在網頁中嵌入交互地圖,也是當前網頁設計中不可或缺的組成部分。而Javascript作為前端開發的主要語言,自然少不了在地圖交互中發揮作用。接下來我們將詳細介紹Javascript在交互地圖中的應用。
在交互地圖中,常見的一種應用場景是標點與文本的交互,比如手機APP上的某個景點地圖,我們點擊一個標點圖標后可以顯示有關景點的詳細信息。在Javascript中,我們可以通過創建一個地圖對象,然后在這個地圖上添加多個標點對象來實現標點與文本的交互。下面我們就來看一下代碼示例:
//創建地圖對象 var map = new BMap.Map("container"); var point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); //標注物增加監聽事件 function addClickHandler(content,marker){ marker.addEventListener("click",function(e){ openInfo(content,e)} ); } //打開信息窗口 function openInfo(content,e){ var p = e.target; var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); var infoWindow = new BMap.InfoWindow(content,{title:"",width:200,height:100}); map.openInfoWindow(infoWindow,point); } //添加自定義標注物 function addMarker(point,content){ var marker = new BMap.Marker(point); map.addOverlay(marker); marker.setAnimation(BMAP_ANIMATION_BOUNCE); addClickHandler(content,marker); } var point = new BMap.Point(116.404,39.915); var marker = new BMap.Marker(point); // 創建標注 var content = "地址:北京市海淀區中關村"; map.addOverlay(marker); // 將標注添加到地圖中 addClickHandler(content,marker);
在代碼示例中,我們通過實例化一個BMap.Map對象來創建一個地圖,然后在地圖上添加標注物,當鼠標點擊標注物時,彈出一個信息窗口顯示對應的內容。由于Javascript處理交互事件的能力較強,因此在地圖的交互過程中可以自定義界面及事件,增強用戶體驗。
除了標點與文本的交互,地圖的搜索功能也是比較常見的一個應用。比如用戶想要查找某個餐廳的位置,通過Javascript框架與地圖API的結合,我們可以創建一個搜索框并實現搜索功能。下面是一段搜索代碼示例:
//創建百度地圖對象 var map = new BMap.Map("container"); map.centerAndZoom(new BMap.Point(113.266780,23.131919), 12); map.enableScrollWheelZoom(); //創建一個搜索框 var ac = new BMap.Autocomplete( //建立一個自動完成的對象 {"input" : "searchBox" ,"location" : map }); //添加監聽事件,執行搜索操作 ac.addEventListener("onconfirm", function(e) { //鼠標點擊下拉列表后的事件 var _value = e.item.value; var myValue = _value.province + _value.city + _value.district + _value.street + _value.business; alert(myValue); setPlace(); }); //搜索操作 function setPlace(){ map.clearOverlays(); //清除地圖上所有覆蓋物 var local = new BMap.LocalSearch(map, { //智能搜索 onSearchComplete: function(results){ if (local.getStatus() == BMAP_STATUS_SUCCESS){ var s = []; for (var i = 0; i < results.getCurrentNumPois(); i ++){ s.push(results.getPoi(i).title); var point = new BMap.Point(results.getPoi(i).point.lng, results.getPoi(i).point.lat); var marker = new BMap.Marker(point); // 創建標注 map.addOverlay(marker); // 將標注添加到地圖中 } alert(s.join("<br>")); } } }); local.search(myValue); }
在代碼示例中,我們首先創建了一個BMap.Map對象,然后創建了一個搜索框,當用戶在搜索框中輸入地址信息后,執行setPlace函數,根據輸入的地址信息在地圖上進行搜索,并將搜索結果返回給用戶,并在地圖上標出相關位置的標注。
total JS的GIS開發框架、OpenLayers API等也是常用的GIS地圖框架,也促進了交互地圖應用的發展。
總之,Javascript在交互地圖應用中發揮了越來越重要的作用,目前國內外對于地圖API的研發也越來越成熟,未來地圖應用必將成為更加豐富、便捷的手機APP及網頁應用。