實例方法
Data
| 實例方法 | 描述 |
|---|---|
| addGeoJson | 將整份 Geojson 資料集加入地圖。 |
| add | 可獨立加入 Feature 到地圖上。 |
| removeFeature | 從地圖中移除指定的 Feature,支援單筆或批次移除。 |
| removeFeatureById | 依據唯一值的屬性 ID,從地圖中移除 Feature。 |
| getFeatureById | 根據唯一 id 取得地圖中的指定項目。 |
| setStyle | 設定資料層上所有地圖項目的樣式,可針對地圖項目個別設定。 |
| setGlobalStyle | 全局設定資料層上地圖項目的樣式,不可針對地圖項目個別設定,所有的地圖項目皆須統一套用同一樣式設定。 |
| overrideStyle | 覆蓋指定 Feature 的樣式,暫時改變其外觀。 |
| revertStyle | 移除使用 overrideStyle 覆蓋的樣式。 |
| revertGlobalStyle | 恢復全域樣式屬性為預設值。 |
| toGeoJson | 將資料層內的地圖項目輸出至 GeoJSON 格式。 |
| forEachFeature | 遍歷地圖中的所有 Feature ,用於重複呼叫指定函式。 |
| filterFeature | 根據條件篩選資料層中的 Feature,回傳符合條件的陣列。 |
| clear | 移除資料層內所有的地圖項目。 |
| enableCluster | 是否啟用資料層叢集功能。 |
| toggleClusterPoints | 顯示或隱藏所有資料層叢集點。 |
| toggleNonClusterPoints | 顯示或隱藏所有資料層非叢集點。 |
Feature
| 實例方法 | 描述 |
|---|---|
| setProperty | 設定指定屬性的內容。 |
| getProperty | 回傳屬性的值。 |
| removeProperty | 移除特定屬性。 |
| setGeometry | 設定地圖項目的經緯度位置。 |
| getGeometry | 回傳地圖項目的經緯度位置。 |
| setVisible | 設定地圖項目的顯示與否。 |
| getBounds | 回傳地圖項目的邊界點。 |
| getCenter | 回傳地圖項目的中心點。 |
| getLeft | 回傳地圖項目的最左座標點。 |
| getRight | 回傳地圖項目的最右座標點。 |
| getTop | 回傳地圖項目的最頂部座標點。 |
| getBottom | 回傳地圖項目的最底部座標點。 |
| forEachProperty | 遍歷所有屬性內容 ,用於重複呼叫指定函式。 |
| displayFeatureText | 添加幾何圖形的文字說明,圖形類別:線條為間距顯示,多邊形及圓形則顯示在圖形中央。 |
| removeDisplayText | 移除以 displayFeatureText 方法添加的文字項目。 |
| iconAlongLinestring | 增加 ICON 至線條圖形上。 |
Data
處理地理幾何圖形的圖層,支援座標點、線條、多邊形及圓形,包含 Features 的集合資料。每個 map 內都會有 Data 物件,不用再自行建構。
addGeoJson
addGeoJson(geojson)
將整份 Geojson 資料集加入地圖。
參數
- geojson
(object): 符合 GeoJSON 格式的幾何圖形資料。
範例
const map = await mapPlus(document.getElementById("map"), {
accessKey: 'get_your_key',
accessToken: 'get_your_token',
style: 'https://kw3dmap.localking.com.tw/openapi/map/kwmap.etxt',
});
map.data.addGeoJson(
"https://kw3dmap.autoking.com.tw/kwmap/assets/demo/geojson/example.geojson"
);
add
add(feature)
加入單筆或多筆 Feature 到地圖上。若傳入的 feature 的 id 已存在,則更新該筆資料而不重複新增。
參數
- feature
(object | Array<object>): 單筆feature或多筆feature陣列,每筆feature需包含geometry及properties兩種物件。
範例
// 單筆新增
map.data.add({
geometry: new mapPlus.Data.Point({
lng: 121.52375708643336,
lat: 25.0306273554757,
}),
properties: {
id: 0,
},
});
// 批次新增(陣列)
map.data.add([
{
geometry: new mapPlus.Data.Point({
lng: 121.52375708643336,
lat: 25.0306273554757,
}),
properties: { id: 0 },
},
{
geometry: new mapPlus.Data.Point({
lng: 121.53012345678901,
lat: 25.0412345678901,
}),
properties: { id: 1 },
},
]);
getFeatureById
getFeatureById(id)
根據 id 取得地圖中的指定項目。
參數
- id
(number | string): 各Feature的唯一鍵值。
回傳
object : geojson 的 feature 格式。
範例
const theFeature = map.data.getFeatureById(1);
removeFeature
removeFeature(feature)
從地圖中移除指定的 Feature,支援單筆或批次移除。
參數
- feature
(object | Array<object>): 單筆Feature或多筆Feature陣列。
範例
// 單筆移除
const removeFea = map.data.getFeatureById(1);
map.data.removeFeature(removeFea);
// 批次移除(陣列)
const fea1 = map.data.getFeatureById(1);
const fea2 = map.data.getFeatureById(2);
map.data.removeFeature([fea1, fea2]);
// 搭配 filterFeature 篩選後批次移除
const targetFeas = map.data.filterFeature((fea) => fea.properties.type === "A");
map.data.removeFeature(targetFeas);
removeFeatureById
removeFeatureById(id)
依據唯一值的屬性 ID,從地圖中移除 Feature。
參數
- id
(number | string): 接收待刪除的地圖項目 id。
範例
map.data.removeFeatureById(1);
setStyle
setStyle(callback | style)
設定資料層上所有地圖項目的樣式,可針對地圖項目個別設定。
參數
- callback
(function): 回調函數,返回資料層中所有地圖項目。 - style
(object): 樣式更改結果。
範例
// callback 使用條件判斷,針對各個地圖項目分開設定樣式
map.data.setStyle((fea) => {
if (fea.getProperty("id") === 1) fea.setProperty("strokeColor", "red");
else fea.setProperty("strokeColor", "blue");
});
// object 一次修改全部地圖項目的樣式
map.data.setStyle({
icon: "B01",
fillColor: "green",
});
setGlobalStyle
setGlobalStyle(style)
全局設定資料層上的點幾何圖形樣式,不可針對地圖項目個別設定,所有的地圖項目皆須統一套用同一樣式設定。
- 目前支援可設定的屬性:
iconOverlap、textOverlap。
參數
- style
(object): 樣式更改結果。
範例
// 所有地圖項目統一套用以下樣式設定
map.data.setGlobalStyle({
iconOverlap: "never",
textOverlap: "never"
});
overrideStyle
overrideStyle(feature, style)
覆蓋指定 Feature 的樣式,暫時改變其外觀。
參數
- feature
(object): 資料層中的地圖項目。 - style
(object): 覆蓋的樣式。
範例
map.data.overrideStyle(feature, { fillColor: "red" });
revertStyle
revertStyle()
移除使用 overrideStyle 所渲染的覆蓋樣式。
範例
map.data.revertStyle();
revertGlobalStyle
revertGlobalStyle()
恢復全域樣式屬性為預設值。
範例
map.data.revertGlobalStyle();
toGeoJson
toGeoJson(callback)
將資料層內的地圖項目輸出至 GeoJSON 格式。
參數
- callback : 以 Geojson 格式輸出整個資料層的地圖項目。
範例
map.data.toGeoJson((data) => {
console.log(data);
});
forEachFeature
forEachFeature(callback)
遍歷地圖中的所有 Feature,用於重複呼叫指定函式。
參數
- callback
(function): 回調函數,返回資料層中所有地圖項目。
範例
map.data.forEachFeature((feature) => {
map.data.removeFeature(feature);
});
filterFeature
filterFeature(predicate)
根據條件篩選資料層中的所有 Feature,回傳符合條件的 Feature 陣列。若 predicate 不是函式,則回傳空陣列。
參數
- predicate
(function): 回調函數,對每個Feature執行判斷,返回true的項目會被納入結果。
回傳
Array<object> : 符合條件的 Feature 陣列。
範例
// 篩選出 type 屬性為 "A" 的所有 Feature
const result = map.data.filterFeature((fea) => fea.properties.type === "A");
console.log(result);
clear
clear()
移除資料層內所有的地圖項目。
範例
map.data.clear();
enableCluster
enableCluster(enabled, options)
是否啟用資料層叢集功能。詳細使用方法可見資料層叢集。
參數
- enabled
(boolean): 是否啟用叢集功能。 - options
(object): 叢集圖的參數。
| 參數 | 描述 |
|---|---|
options.radius number | 選填,叢集半徑,以像素為單位,預設為 50。 |
options.maxZoom number | 選填,叢集圖層會停止叢集化的最大縮放級別,預設為 14。 |
options.styles object | 選填,叢集圖的樣式設置。 |
範例
map.data.enableCluster(true);
toggleClusterPoints
toggleClusterPoints(visible)
顯示或隱藏所有資料層叢集點。
參數
- visible
(boolean): 是否顯示資料層叢集點。
範例
// 隱藏叢集點
map.data.toggleClusterPoints(false);
// 顯示叢集點
map.data.toggleClusterPoints(true);
toggleNonClusterPoints
toggleNonClusterPoints(visible)
顯示或隱藏所有資料層非叢集點。
參數
- visible
(boolean): 是否顯示資料層非叢集點。
範例
// 隱藏非叢集點
map.data.toggleNonClusterPoints(false);
// 顯示非叢集點
map.data.toggleNonClusterPoints(true);
Feature
地圖項目包含唯一 ID、幾何圖形及屬性資料。請搭配 data.setStyle 或 data.getFeatureById 一起使用。
setProperty
setProperty(property, value)
設定指定屬性的內容。
參數
- property
(string): 地圖項目的屬性名稱。 - value
(string | number): 需設定的值。
範例
const theFeature = map.data.getFeatureById(1);
theFeature.setProperty("strokeColor", "red");
getProperty
getProperty(property)
回傳屬性的值。
參數
- property
(string): 指定的屬性名稱。
範例
map.data.setStyle((fea) => {
if (fea.getProperty("id") === 1) fea.setProperty("strokeColor", "red");
});
removeProperty
removeProperty(property)
移除特定屬性,其中 id 為識別地圖項目的唯一值,因此不可刪除。
參數
- property
(string): 移除的屬性名稱。
範例
const theFeature = map.data.getFeatureById(1);
theFeature.removeProperty("name");
setGeometry
setGeometry(geometry)
設定地圖項目的經緯度位置,經度在前緯度在後。
參數
- geometry
(array): 包含經緯度的陣列。
範例
const theFeature = map.data.getFeatureById(1);
const newCoordinates = [121.528327, 25.041783];
theFeature.setGeometry(newCoordinates);
getGeometry
getGeometry()
回傳地圖項目的經緯度位置。
回傳
- geometry
(array): 幾何圖形的經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getGeometry());
setVisible
setVisible(visible)
設定地圖項目的顯示與否。
參數
- visible
(boolean): 是否顯示地圖項目。
範例
const theFeature = map.data.getFeatureById(1);
theFeature.setVisible(false);
getBounds
getBounds()
回傳地圖項目的邊界點。
回傳
- geometry
(array): 幾何圖形的邊界經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getBounds());
// [
// [121.528007, 25.026569],
// [121.530466, 25.0281305]
// ]
getCenter
getCenter()
回傳地圖項目的中心點。
回傳
- geometry
(array): 幾何圖形的中心點經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getCenter());
// [121.5292365, 25.02734975]
getLeft
getLeft()
回傳地圖項目的最左座標點。
回傳
- geometry
(array): 幾何圖形的最左經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getLeft());
// [121.528007, 25.026766]
getRight
getRight()
回傳地圖項目的最右座標點。
回傳
- geometry
(array): 幾何圖形的最右經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getRight());
// [121.530466, 25.027895]
getTop
getTop()
回傳地圖項目的最頂部座標點。
回傳
- geometry
(array): 幾何圖形的最頂部經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getTop());
// [121.528262, 25.0281305]
getBottom
getBottom()
回傳地圖項目的最底部座標點。
回傳
- geometry
(array): 幾何圖形的最底部經緯度陣列。
範例
const theFeature = map.data.getFeatureById(1);
console.log(theFeature.getBottom());
// [121.530385, 25.026569]
forEachProperty
forEachProperty(callback)
遍歷所有屬性內容 ,用於重複呼叫指定函式。
參數
- callback
(function): 回調函數,該回調函式返回包含 屬性內容 以及屬性名稱的物件。
範例
feature.forEachProperty((value, property) => {
console.log(value, property);
});
displayFeatureText
displayFeatureText(text)
添加幾何圖形的文字說明,若為線條幾何圖形則文字為間距顯示;多邊形及圓形幾何圖形文字則會顯示在圖形中央。
參數
- text
(string): 可輸入屬性名稱或是文字內容。
範例
map.data.setStyle((fea) => {
const { id } = fea.properties;
if (id === 0) {
// 1. 接收文字的string型態
fea.displayFeatureText("板南線");
} else {
// 2. 接收要顯示的property name
fea.displayFeatureText("name");
}
});
removeDisplayText
removeDisplayText()
移除以 displayFeatureText 方法添加的文字項目。
範例
map.data.setStyle((fea) => {
fea.removeDisplayText();
});
iconAlongLinestring
iconAlongLinestring()
沿著線條 Feature 增加 ICON 顯示,可依據使用情況調整 ICON 的樣式。
詳細使用方法可見範例:
參數
-
options
(object): 要設定的ICON樣式。參數 描述 options.iconImage (string)圖案名稱,預設為 "black_location"。options.iconSize (number)圖案大小,預設為 1。 options.rotationAlignmentMap (boolean)ICON 的垂直目標, true為垂直線條方向,false為垂直地圖視窗方向。options.iconRotate (number)順時針的旋轉角度,以角度為單位,預設為 0。
範例
map.data.setStyle((fea) => {
if (fea.getProperty("id") === 3) {
fea.iconAlongLinestring({
iconImage: "newImage",
iconSize: 0.1,
rotationAlignmentMap: false,
});
}
});