彈跳窗也是個常用的功能,所以我們今天來看看如何在地圖上產生彈跳窗!
剛好前幾天學了如何在地圖上標記 Marker,結合一下來做一個小功能~ GoGo
Popup:
new Popup(options: Object?)
簡單產生一個彈跳窗的寫法很簡單,跟 Marker 的寫法有點相像:
const popup = new mapboxgl.Popup()
.setLngLat([121, 23.5])
.setHTML('<h1>Hello World!</h1>')
.addTo(map);
setLngLat
是設置彈跳窗的位置 (經緯度),setHTML
內放你要的文字訊息,記得要是 HTML 格式的喔!加上這段程式碼後你就會得到一張有彈跳窗的地圖:
是不是很簡單!
那 Mapbox 也有對彈跳窗的功能設定,我把一些常用的列出來:
Name | Default | Description |
---|---|---|
anchor | bottom | 彈跳窗顯示位置 (center / top / bottom / left / right / top-left / top-right / bottom-left / bottom-right ) |
closeButton | true | 是否顯示關閉按鈕 |
closeOnClick | true | 點擊地圖時彈跳窗是否關閉 |
closeOnMove | false | 移動地圖時彈跳窗是否關閉 |
maxWidth | 240px | 彈跳窗最大寬度 |
offset | 0px | 彈跳窗和所設定的經緯度的偏移大小 |
這邊帶一個使用範例:
ex. 彈跳窗不顯示關閉按鈕
const popup = new mapboxgl.Popup({
closeButton: false
})
.setLngLat([121, 23.5])
.setHTML('<h1>Hello World!</h1>')
.addTo(map);
接下來就來介紹組合技了˛˛ꉂ ◞•̀д•́)◞⚔◟(•̀д•́◟ )
我們常在地圖上使用彈跳窗的情況還是點擊 Marker 的時候對吧!寫法只要再加上 setPopup
就好,其他詳細用法跟上面的介紹一樣:
const marker = new mapboxgl.Marker()
.setLngLat([121, 23.5])
.setPopup(new mapboxgl.Popup().setHTML("<h1>Hello World!</h1>"))
.addTo(map);
點擊 Marker,就會跑出彈跳窗:
今天的東西比較輕鬆,那明天會利用這幾天學到的東西來做一個小 Demo,期待一下~
阿對了,如果對 React 不熟悉或是對資安有興趣的人可以來看這兩個系列的文章喔!
(這算置入性行銷ㄇ..?)