iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
1
Modern Web

使用Leaflet及Folium開啟網頁地圖大門系列 第 3

03. Leaflet_Map Class基本介紹(下)

在map中,除了Modifying map state以外,還有以下幾個類型:

  • Getting map state(回傳map狀態)
  • Layers and controls(圖層及控制設定)
  • Conversion methods(轉換方法)
  • Other methods(其他)

由於Conversion methods及other methods比較少用到,這邊就先不介紹了。寫文章搭配gif很生動沒錯,但是寫到一半已經想哭了哈哈哈....真不該臨時起意的......./images/emoticon/emoticon02.gif等一下還要補第二天沒錄完的GIF/images/emoticon/emoticon14.gif。雖然辛苦很多,但可以看到執行的成果也是有些成就感,希望邦友們多多支持!有甚麼疑問或是需要改的地方再請不吝指教了,先在這邊謝謝大家~

Getting map state

當你在使用leaflet需要知道現在地圖的中心點、邊界範圍、zoom等級的時候,就會需要用到以下這些options囉!

  • getCenter()
    使用getCenter()會回傳座標的陣列(<latlng>),可以取得現在地圖的中心點座標。以01. 起手式完成的地圖為範例來測試,使用getCenter()後會得到中心座標{lat: 22.73444963475145, lng: 120.28458595275877}
    getCenter.gif
  • getZoom()
    getZoom()將回傳目前的zoom等級,如果以範例測試,將取得回傳的值為14
    getZoom.gif
  • getBounds()
    回傳的邊界範圍,以東北角及西南角的點座標表示:
    {
        northEast: M {lat: 22.75979896241216, lng: 120.32784461975099},
        southWest: M {lat: 22.70913519524387, lng: 120.24132728576662}
    }
    
    getBounds.gif
  • getMinZoom()
    回傳最小zoom等級,由於範例沒有設定,所以就會回傳預設值0
    getMinZoom.gif
  • getMaxZoom()
    回傳最大zoom等級,在此範例會回傳值14
    getMaxZoom.gif

Layers and controls

Layers and controls主要用於設定縮放控制、圖層、popup、tooltip等功能,最常用到的時機應該是在新增或移除圖層的時候會使用到。

  • addControl()
    control下有zoomscaleattributionlayers。addControl()可以將建立好的以上四種物件加入地圖中,下面以加入zoom物件為例,原本地圖左上角已經有一個zoom物件,那我們在右上角再加一個物件吧XD
    先在console中建立zoom物件
    addControl_1.gif
    再利用addControl()將zoom物件加入地圖中,你就會看到地圖的右上角也出現zoom物件了!!!
    addControl_2.gif
    接下來試試把zoom物件移除
  • removeControl()
    removeControl.gif
    是不是很簡單?!讓我們再來看看下一個!!
  • addLayer()
    addLayer就是將圖層加到地圖中。圖層的樣式有很多種,從點、線、面各有不同的圖層樣式。有關圖層的基本介紹會再之後用1到2篇的文章說明(希望寫的完......)。addLayer的效果就是將已建好的圖層加進地圖中,為了能看到效果,等一下會先建立一個點圖層Marker在高雄大學裡面,我將他命名為NUK,並把newMarker加入到地圖中。
    addLayer.gif
  • removeLayer()
    可以加圖層,那就可以把圖層移除!!
    removeLayer.gif
  • openPopup
    popup是一種彈跳話框的名稱。當在地圖中點選圖層或物件的話,可以觸發popup顯示資訊。openPopup()的使用方式有兩種,第一種是將已建立的popup顯示出來,第二種是指定要顯示的資訊及座標,地圖就會依照指定的位置顯示資訊。
    下面用第一種方式,先建立指定位置的顯示資訊,命名為nukPopup,然後再顯示出來,位置為高雄大學,資訊內容則是"國立高雄大學在這裡!!!",格式為(資訊, 座標),資訊是字串,可支援HTML標籤語法,程式碼如下:
    nukPopup = L.popup().setLatLng([22.73444963475145, 120.28458595275877]).setContent("國立高雄大學在這裡!!!")
    
    輸入完按下Enter,就會看到國立高雄大學在這裡!!!從地圖中跳出來了~~~
    openPopup_1.gif
    再來用第二種方式於指定位置的顯示資訊,位置一樣是高雄大學,資訊內容則是"國立高雄大學在這裡!!!",格式為(資訊, 座標),資訊是字串,可支援HTML標籤語法,程式碼如下:
    myMap.openPopup("國立高雄大學在這裡!!!", [22.73444963475145, 120.28458595275877])
    
    輸入完按下Enter,就會看到國立高雄大學在這裡!!!從地圖中跳出來了~~~
    openPopup.gif
    學會開啟了,那麼我們就來關掉他,結束這回合!!!
  • closePopup()
    closePopup只能關掉已建立的popup物件,所以如果是用第二種方法顯示的popup是無法透過程式碼移除的喔!!
    closePopup.gif

這回合終於結束,希望看文章的邦友也有一些收穫~


上一篇
02. Leaflet_Map Class基本介紹(上)
下一篇
04. Leaflet_圖層介紹
系列文
使用Leaflet及Folium開啟網頁地圖大門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言