您已全部設定完成!

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

啟用 Google Maps Android API

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

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

地面疊加層

地面疊加層是與緯度/經度座標連結的影像疊加層,因此它們會隨著您拖曳或縮放地圖而移動。

程式碼範例

GitHub 上的 ApiDemos 存放區包括示範地面疊加層的範例:

簡介

地面疊加層是固定於地圖上的影像。 地面疊加層和[標記]不同之處,在於它的方向是朝著地球表面標記(而非螢幕)貼合,因此在旋轉、傾斜或縮放地圖時,將會同時變更影像的方向。

在您想要修正地圖上單一地區的單一影像時,地面疊加層就特別有用。 如果您想要新增內容較廣泛的影像會覆蓋大部分的地圖,您應該考慮用地圖方塊疊加層

新增疊加層

如果要新增 GroundOverlay,請建立同時定義影像與位置的 GroundOverlayOptions 物件。

您可以選擇性地指定能影響影像在地圖上之位置的額外設定。 當您定義必要選項之後,請將物件傳遞至 GoogleMap.addGroundOverlay() 方法,以將影像新增至地圖。

addGroundOverlay() 方法會傳回 GroundOverlay 物件;如果您稍後想要修改,應該要保留此物件的參照。

注意:將影像新增至地圖時會轉換影像,使影像側邊大小為二的次方。 如果您使用的原始影像尺寸為二的次方(例如 128x512 或 1024x1024),就能避免上述轉換。

逐步指示:

  1. 實例化新的 GroundOverlayOptions 物件
  2. 將影像指定為 BitmapDescriptor
  3. 使用下列其中一種可用方法設定影像的位置:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. 視需要設定任何選擇性屬性,例如 transparency
  5. 呼叫 GoogleMap.addGroundOverlay(),將影像新增至地圖。

下列範例示範如何將地面疊加層新增到現有的 GoogleMap 物件。

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

如果要在將地面疊加層新增至地圖之後,變更或移除地面疊加層,請務必保留 GroundOverlay 物件。 您稍後可以透過變更此物件以修改疊加層。

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

移除疊加層

您可以使用 GroundOverlay.remove() 方法來移除地面疊加層。

imageOverlay.remove();

變更疊加層

您可以使用 GroundOverlay.setImage(BitmapDescriptor) 方法,將地面疊加層影像新增至地圖之後,變更該影像。

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

setImage() 方法會以另一個尺寸相同的影像取代現有影像。

定位地面疊加層

您可透過兩種方式指定地面疊加層的位置:

  • 使用 LatLng 置中放置疊加層,並以公尺為尺寸單位指定影像大小。

  • 使用 LatLngBounds 指定影像的東北角與西南角。

您必須指定地面疊加層的位置,然後才能將疊加層新增至地圖。

使用位置定位影像

當您新增影像時,您會指定要固定錨定點的 LatLng 以及疊加層寬度(公尺)。 anchor 預設為影像中央。

您可以選擇性提供疊加層的高度(公尺)。 如果您未提供疊加層的高度,就會依照影像比例自動計算。

以下程式碼會將影像放在 40.714086, -74.228697 的位置,寬 8.6 公里,高 6.5公里。 影像會錨定在左下方。

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .anchor(0, 1)
        .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

使用 LatLngBounds 定位影像

您提供包含影像的 LatLngBoundsLatLngBounds 可設定影像的東北角與西南角。 在地圖上繪製影像時,會旋轉影像以貼合邊界。 如果邊界與原始外觀比例不符,影像會變得扭曲。

以下程式碼會將影像放在地圖上,影像的西南角為 40.712216,-74.22655,而東北角為 40.773941, -74.12544

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

處理地面疊加層事件

根據預設,地面疊加層是不可點擊的。 您可以透過呼叫 GroundOverlay.setClickable(boolean),以啟用及停用可點擊性。

請使用 OnGroundOverlayClickListener 來在可點擊的地面疊加層上接聽點擊事件。 如果要在地圖上設定此接聽程式,請呼叫 GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener)

當使用者按一下地面疊加層時,您將會接收到 onGroundOverlayClick(GroundOverlay) 回呼。

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

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