Maps SDK for Android 公用程式庫

選取平台: Android iOS

想在地圖中加入進階地圖項目嗎?Maps SDK for Android 公用程式庫是適合各種應用程式的開放原始碼類別程式庫。GitHub 存放區包含公用程式類別和說明各類別用途的試用版應用程式。

在這部影片中,Chris Broadfoot 將會介紹公用程式庫,並著重說明折線解碼、球面幾何圖形和泡泡圖示。

快速設定

若要安裝 Maps SDK for Android 公用程式庫,請按照設定指南操作。

公用程式

含 GeoJSON 圖層的地圖

將 GeoJSON 匯入地圖

您可以用 GeoJSON 格式儲存地圖項目,然後使用這個公用程式將這些地圖項目算繪為疊加在地圖上的圖層。呼叫 addLayer() 即可將 GeoJSON 資料新增至地圖。您也可以呼叫 addFeature() 並傳入 GeoJsonFeature 物件,藉此新增個別地圖項目。

相關詳情請參閱 Google 地圖 Android GeoJSON 公用程式說明文件。

含 KML 圖層的地圖

將 KML 匯入地圖

您可以使用這個公用程式將 KML 物件轉換成地理形狀,然後把物件算繪為疊加在地圖上的圖層。呼叫 addLayerToMap() 即可將圖層加入地圖。如要存取 KML 物件的屬性,請在任何 Placemark、GroundOverlay、Document 或 Folder 上呼叫 getProperties()

相關詳情請參閱 Google 地圖 Android KML 公用程式說明文件。

含熱視圖的地圖

在地圖上加入熱視圖

熱視圖能在地圖上顯示資料點的分布位置及相對強度,讓檢視者一目瞭然。這類地圖並不會在各個地點放置標記,而是使用顏色和形狀來表示資料的分布情形。建立 HeatmapTileProvider,並向其傳遞用來代表地圖上搜尋點的 LatLng 物件集合。接下來請建立新的 TileOverlay,並向其傳遞熱視圖圖塊提供者,然後將圖塊疊加層加進地圖。

相關詳情請參閱 Google 地圖 Android 熱視圖公用程式說明文件。

含泡泡圖示的地圖

透過泡泡圖示自訂標記

加入 IconGenerator 即可在標記上顯示資訊摘要。此公用程式能讓標記圖示看起來類似資訊視窗,標記本身可包含文字和其他內容。這種做法的好處是您可以同時開啟多個標記,不像資訊視窗一次只能開啟一個。您也可以為標記設定樣式、變更標記和/或內容的方向,以及變更標記的背景圖片/可自訂大小的點陣圖 (9-patch)。

含叢集標記的地圖

管理標記叢集

ClusterManager 可協助您管理多個縮放等級不同的標記。也就是說,您可以在地圖上放置大量標記,而不會讓版面因此變得雜亂難看。當使用者以高縮放等級查看時,地圖上會顯示個別標記;縮小至較低等級時,標記會合併為叢集,讓使用者輕鬆查看地圖。

相關詳情請參閱 Google 地圖 Android 標記叢集公用程式說明文件。

含多個圖層的地圖

在同一張地圖上加入多個圖層

您可以在同一張地圖上顯示 GeoJSON、KML 和叢集的地圖項目,以及您自訂的標記、折線和多邊形。此外,只要在每個圖層加入點擊事件監聽器,就能讓圖層變成互動式。在設定圖層時對 MarkerManagerGroundOverlayManagerPolygonManagerPolylineManager 類別執行個體化,然後將這些類別傳遞至 GeoJsonLayerKmlLayerClusterManager 的建構函式即可。接著,您可以直接使用上述的 Manager 類別,將自己的標記、折線和多邊形加入地圖。

相關詳情請參閱 Google 地圖 Android 多圖層試用版說明文件

含編碼折線的地圖

對折線進行編碼及解碼

PolyUtil 可用來將經過編碼的折線和多邊形轉換成經緯度座標,也能將座標轉換成編碼。

在 Google 地圖中,用來定義折線或多邊形的經緯度座標會以編碼字串的形式儲存。請參閱折線編碼的詳細說明。您可能會在 Google API (例如 Directions API) 的回應中收到這個編碼字串。

您可以使用 Maps SDK for Android 公用程式庫中的 PolyUtil,將一系列經緯度座標 (「LatLng」) 轉成編碼路徑字串,或將編碼路徑字串解碼為一系列經緯度座標。如此可確保能與 Google Maps API 網路服務互通。

地圖上兩點之間的計算距離

透過球面幾何圖形計算距離、面積和方向

您可以使用 SphericalUtil 的球面幾何圖形公用程式,依據緯度和經度來計算距離、面積和方向。以下列舉公用程式中提供的一些方法:

  • computeDistanceBetween() — 傳回兩個經緯度座標之間的距離 (單位為公尺)。
  • computeHeading() — 傳回兩個經緯度座標之間的航向 (單位為度數)。
  • computeArea() — 傳回地球上封閉式路徑圍起的面積 (單位為平方公尺)。
  • interpolate() — 依兩點距離的指定比例,傳回特定點的經緯度座標。舉例來說,您可以用這個方法為兩點之間的標記加入動畫效果。

如需公用程式中可用方法的完整清單,請參閱參考說明文件