您已全部設定完成!

若要開始開發,請參閱我們的開發人員文件

啟用 Google Maps Android API

為協助您開始,我們將先引導您使用 Google Developers Console 來執行一些動作:

  1. 建立或選擇專案
  2. 啟用 Google Maps Android API
  3. 建立適當的金鑰
繼續

Google Maps Android GeoJSON 公用程式

  1. 簡介
  2. 將 GeoJsonLayer 新增至地圖
  3. 移除 GeoJsonLayer
  4. 新增和移除 GeoJsonFeature
  5. 存取 GeoJsonFeatures 與其屬性
  6. 設定 GeoJsonLayer 與 GeoJsonFeatures 的樣式
  7. 參閱示範應用程式

簡介

GeoJSON 是 JSON 資料格式的延伸,也代表地理資料。使用此公用程式,您能以 GeoJSON 格式儲存地理特徵,以及將它們轉譯為地圖上方的圖層。如果要將 GeoJSON 資料新增至地圖和從地圖中移除,請分別呼叫 addLayer()clearLayer()。同樣地,您可以呼叫 addFeature()removeFeature(),然後傳入 GeoJsonFeature 物件,以新增和移除個別地理特徵。如果您想要存取地理特徵,可以呼叫 getFeatures(),以反覆取得已新增至圖層的所有 GeoJsonFeature 物件。

您也可以設定要將地理特徵新增至圖層之前所要套用的預設樣式,方法是呼叫 getDefaultPointStyle()getDefaultLineStringStyle() getDefaultPolygonStyle(),然後設定每一個的樣式選項。或者,您可以針對地理特徵呼叫 setPointStyle()setLineStringStyle()setPolygonStyle(),然後傳入相關的樣式物件,以針對個別的 GeoJsonFeature 設定樣式。

將 GeoJsonLayer 新增至地圖

如果要將 GeoJson 圖層新增至地圖,請先建立 GeoJsonLayer 類別的實例。您可以透過兩種方式將 GeoJsonLayer 實例化。

如果要從 JSONObject 匯入,您需要下列項目:

  • 要轉譯圖層的 GoogleMap 物件
  • JSONObject,內含要新增至圖層的 GeoJSON 資料
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

如果要從 GeoJSON 檔案匯入,您需要下列項目:

  • 要轉譯圖層的 GoogleMap 物件
  • 包含 GeoJSON 資料的本機資源檔案。
  • 開啟本機資源檔案所需的 Context 物件
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());

在您建立 GeoJsonLayer 之後,請呼叫 addLayer() 以將匯入的資料新增至地圖上。

layer.addLayer();

移除 GeoJsonLayer

假設您已經新增此圖層:

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

如果要清除 GeoJsonLayer,請呼叫 clearLayer()

layer.clearLayer();

新增和移除 GeoJsonFeature

GeoJSON 中的地理特徵類型為 "feature" 。它包含一個幾何圖形、屬性成員,還可選擇性包含邊界方塊或 ID。

您可以個別建立 GeoJsonFeature 物件,然後將它們新增至 GeoJsonLayer

假設您已建立的地理特徵中包含 0, 0 座標點,有一項屬性且沒有邊界方塊。

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

如果要將地理特徵新增至圖層,請呼叫 addFeature(),然後傳入要新增的特徵。

layer.addFeature(pointFeature);

新增至圖層之後,如果要移除地理特徵,請呼叫 removeFeature(),然後傳入要移除的特徵。

layer.removeFeature(pointFeature);

存取 GeoJsonFeatures 與其屬性

如果要存取已新增至圖層的所有 GeoJsonFeatures,您可以針對已建立的 GeoJsonLayer 呼叫 getFeatures()。您可以使用 for-each 迴圈來存取這樣反覆傳回的 GeoJsonFeatures,如下所示。

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

結合 getFeatures() 方法來使用 hasProperty()getProperty() 方法,以檢查儲存的每個地理特徵是否都具有特定屬性,並存取符合的特徵。

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

設定 GeoJsonLayer 與 GeoJsonFeatures 的樣式

您可以設定 GeoJsonLayer 的預設樣式,或設定圖層中個別特徵的樣式。

預設樣式

在 GeoJsonLayer 中,您可以對要新增至圖層的任意點、串線及多邊形設定預設樣式。只有當特徵的幾何圖形無已設定樣式時,才會套用預設樣式。使用預設樣式的所有特徵也都會反映出您對預設樣式所做的變更。

套用預設樣式的步驟如下

  1. 擷取相關的預設樣式物件,這可以是 GeoJsonPointStyleGeoJsonLineStringStyleGeoJsonPolygonStyle 之一。
  2. 在樣式上套用您想要的選項。

例如,下列程式碼範例顯示如何修改預設點樣式,使點可以拖曳,還有一個標題與片段。

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

GeoJsonFeature 專屬樣式

或者,您可以設定圖層中個別特徵的樣式。在 GeoJsonFeature 上套用樣式的步驟如下

  1. 建立相關的樣式物件,這可以是 GeoJsonPointStyleGeoJsonLineStringStyleGeoJsonPolygonStyle 任一。
  2. 在樣式上套用您想要的選項
  3. 將樣式物件傳遞至 GeoJsonFeature 上的 setPointStyle()setLineStringStyle()setPolygonStyle() 相關方法。

例如,以下是如何將 GeoJsonFeature 的串線色彩樣式自訂為紅色。

// Create a new feature containing a linestring
ArrayList<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

參閱示範應用程式

如需從 URL 匯入 GeoJSON 檔案,然後用以建立圖層的範例,請參閱公用程式庫所隨附示範應用程式中的 GeoJsonDemoActivity設定指南說明如何執行示範應用程式。

傳送您對下列選項的寶貴意見...

這個網頁
Google Maps Android API
Google Maps Android API
需要協助嗎?請前往我們的支援網頁