線條的互動效果
此範例示範如何在地圖上實現線條 Feature 的互動效果,包含以下功能:
- 覆蓋樣式:使用
map.addListener("mouseover")監聽滑鼠移入事件,並使用map.data.overrideStyle()方法覆蓋線條的寬度和透明度 - 還原樣式:使用
map.addListener("mouseout")監聽滑鼠移出事件,並使用map.data.revertStyle()方法還原線條的原始樣式
info
詳細使用說明請參考「資料層」。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>線條的互動效果</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<script src="https://kw3dmap.localking.com.tw/openapi/loader/mapPlus-1.3.9.loader.js" crossorigin="anonymous" referrerpolicy="origin"></script>
<style>
body { margin: 0; padding: 0; }
#map { width: 100vw; height: 100vh; }
</style>
</head>
<body>
<div id="map"></div>
<script type="module">
const map = await new mapPlus(document.getElementById("map"), {
accessKey: "get_your_key", // 聯絡勤崴國際,取得專屬key
accessToken: "get_your_token", // 聯絡勤崴國際,取得專屬token
style: 'https://kw3dmap.localking.com.tw/openapi/map/kwmap.etxt', // 樣式
center: { lng: 121.539489, lat: 25.043539 },
zoom: 14,
});
// 將藍色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.519633, lat: 25.045716 },
{ lng: 121.535425, lat: 25.041954 },
{ lng: 121.543594, lat: 25.041654 },
{ lng: 121.557682, lat: 25.041332 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#20D0E4",
id: 1,
},
});
// 將黃色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.533018, lat: 25.051893 },
{ lng: 121.532708, lat: 25.033877 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#F0E68C",
id: 2,
},
});
// 將棕色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.544062, lat: 25.051843 },
{ lng: 121.543635, lat: 25.03336 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#DEB887",
id: 3,
},
});
/* ══════════════════════════════════════════════════════════════════════════
* 覆蓋樣式:
- 可調整 strokeWeight 來更換線條寬度。
- 可調整 strokeOpacity 來更換線條透明度。
══════════════════════════════════════════════════════════════════════════ */
// 當鼠標懸停在線條上
map.addListener("mouseover", (feature) => {
// 覆蓋樣式
map.data.overrideStyle(feature, {
// 線條寬度
strokeWeight: 25,
// 線條透明度
strokeOpacity: 1,
});
});
/* ══════════════════════════════════════════════════════════════════════════
* 移除覆蓋樣式
══════════════════════════════════════════════════════════════════════════ */
// 當鼠標離開線條
map.addListener("mouseout", (event) => {
// 移除所覆蓋的樣式
map.data.revertStyle();
});
</script>
</body>
</html>
<script src="https://kw3dmap.localking.com.tw/openapi/loader/mapPlus-1.3.9.loader.js" crossorigin="anonymous" referrerpolicy="origin"></script>
<script type="module">
const map = await new mapPlus(document.getElementById("map"), {
accessKey: "get_your_key", // 聯絡勤崴國際,取得專屬key
accessToken: "get_your_token", // 聯絡勤崴國際,取得專屬token
style: 'https://kw3dmap.localking.com.tw/openapi/map/kwmap.etxt', // 樣式
center: { lng: 121.539489, lat: 25.043539 },
zoom: 14,
});
// 將藍色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.519633, lat: 25.045716 },
{ lng: 121.535425, lat: 25.041954 },
{ lng: 121.543594, lat: 25.041654 },
{ lng: 121.557682, lat: 25.041332 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#20D0E4",
id: 1,
},
});
// 將黃色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.533018, lat: 25.051893 },
{ lng: 121.532708, lat: 25.033877 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#F0E68C",
id: 2,
},
});
// 將棕色線條加入地圖
map.data.add({
geometry: new mapPlus.Data.LineString([
{ lng: 121.544062, lat: 25.051843 },
{ lng: 121.543635, lat: 25.03336 },
]),
properties: {
strokeWeight: 20,
strokeColor: "#DEB887",
id: 3,
},
});
/* ══════════════════════════════════════════════════════════════════════════
* 覆蓋樣式:
- 可調整 strokeWeight 來更換線條寬度。
- 可調整 strokeOpacity 來更換線條透明度。
══════════════════════════════════════════════════════════════════════════ */
// 當鼠標懸停在線條上
map.addListener("mouseover", (feature) => {
// 覆蓋樣式
map.data.overrideStyle(feature, {
// 線條寬度
strokeWeight: 25,
// 線條透明度
strokeOpacity: 1,
});
});
/* ══════════════════════════════════════════════════════════════════════════
* 移除覆蓋樣式
══════════════════════════════════════════════════════════════════════════ */
// 當鼠標離開線條
map.addListener("mouseout", (event) => {
// 移除所覆蓋的樣式
map.data.revertStyle();
});
</script>
<style>
body { margin: 0; padding: 0; }
#map { width: 100vw; height: 100vh; }
</style>