iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
0

Leaflet基本型物件態包含以下類型:

  • LatLng
  • LatLngBounds
  • Point
  • Bounds
  • Icon
  • DivIcon

LatLng

LatLng就是Latitude 與Longitude,也就是座標的經緯度。LatLng的資料格式為{lat: , lng: },可以看到它是一個dictionary的格式,其中包含的key為latlng,分別為緯度、經度。

建立latLng的方法有三種,以下均用緯度:22.73444963475145, 經度:120.28458595275877做示範:

L.latLng(22.73444963475145, 120.28458595275877);
L.latLng([22.73444963475145, 120.28458595275877]);
L.latLng({
    lat: 22.73444963475145, 
    lng: 120.28458595275877
})
L.latLng({
    lng: 120.28458595275877,
    lat: 22.73444963475145
})

第1行以逗點將座標串起來,第2行則以陣列方式串起來,兩個方式要注意的是順序不能相反,先緯度再經度。
第3行跟第7行都是用dictionary建立,兩者順序不同,但最後都可以產出同一個點。

LatLngBounds

LatLngBounds以Bounds為最後呈現結果,用latLng來建立。LatLngBounds的資料格式為{northEast: , southWest: },同樣也是dictionary格式,但是key變為 northEastsouthWest,也就是東北與西南角,而兩個value都是latLng格式。LatLngBounds在建立時使用對角的2個座標點,格式均為latLng,LatLngBounds會根據點的位置取東北角與西南角的座標值儲存。以下用西北角及東南角的兩個座標點測試看看輸出的結果:

L.latLngBounds([
    [22.73444963475145, 120.2877], 
    [22.75444963475145, 120.254585952]
])

這邊直接用陣列將兩個點包起來,最後得到的輸出結果為:

{
    northEast:{ 
        lat: 22.75444963475145,
        lng: 120.2877
    },
    southWest:{ 
        lat: 22.73444963475145,
        lng: 120.254585952
    }
}

可以看到我提供的第一個點座標為 [22.73444963475145, 120.2877],但輸出的latLngBounds是 [22.75444963475145, 120.2877],也就是第二個點的緯度跟第一個點的經度,而這個點的確是此矩形的東北角,所以latLngBounds確實有抓到正確的範圍。

Point

Point格式跟latLng一樣,唯一不同的地方是point單位是pixel,latLng是度。

Bounds

Bounds也跟latLngBounds格式相同,而bounds的單位是pixel,latLngBounds則是度。
所以latLng跟latLngBounds搭配;point跟bounds搭,只要看有latLng開頭就不會混淆了。

Icon

在建立marker的時候,可以設定marker的icon。Icon有以下options可以設定:

  • iconUrl:String
    • 必要參數
    • icon的路徑
  • iconRetinaUrl:String
    • 預設null
    • retina的icon路徑
  • iconSize: Point
    • 預設null
    • icon圖片的大小,單位為pixel
  • iconAnchor: Point
    • 預設null
    • icon尖端的座標
  • popupAnchor: Point
    • popup出現的座標點
    • 預設[0, 0]
    • 相對於iconAnchor的座標
  • tooltipAnchor: Point
    • tooltip出現的座標點
    • 預設[0, 0]
    • 相對於iconAnchor的座標
  • shadowUrl: String
    • 預設null
    • 製作陰影圖片的路徑
  • shadowRetinaUrl: String
    • 預設null
    • 製作陰影的retina圖片路徑
  • shadowSize: Point
    • 預設null
    • 陰影圖片的大小,單位為pixel
  • shadowAnchor: Point
    • 預設null
    • 陰影尖端的座標
  • className String
    • 預設為''
    • 指定icon與陰影圖片的class名稱

DivIcon

DivIcon拆開來看就是div + icon。也就是說你可以用div建立任何icon樣式,只要是div做的到的都可以。看起來好像很厲害,但我跟網頁還沒有很熟,所以我都只用icon來設定而已XDD

簡單地介紹完物件型態,一天又順利過去了!!!
有任何問題歡迎在底下留言喔~


上一篇
09. Leaflet_Other Layers
下一篇
11. Leaflet_Controls
系列文
使用Leaflet及Folium開啟網頁地圖大門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言