您已全部設定完成!

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

啟用 Google Maps Android API

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

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

Google 地圖 KML 匯入公用程式

  1. 簡介
  2. 新增 KML 圖層
  3. 清除 KML 圖層
  4. 存取 KML 容器
  5. 存取 KML 地點標記與 KML 地面疊加層
  6. 存取 KML 屬性
  7. KML 支援的功能

簡介

KMLXML 資料格式的延伸,也代表地圖上的地理資料。使用此公用程式,您可以將 KML 物件轉換成地理形狀,以及將它們轉譯為地圖上方的圖層。如果要將 KML 資料新增至地圖和從地圖中移除,請分別呼叫 addLayerToMap()removeLayerFromMap()。如果要存取 KML 物件中的屬性,請在 Placemark、GroundOverlay、Document 或 Folder 上呼叫 getProperties()

將 KML 圖層新增至地圖

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

如果要從本機資源匯入和轉譯 KML 資料集,您需要:

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

如果要從本機串流匯入和轉譯 KML 資料集,您需要:

  • 要轉譯圖層的 GoogleMap 物件。
  • 包含 KML 資料的 InputStream
  • 開啟本機資源所需的 Context 物件。
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

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

layer.addLayerToMap();

清除 KML 圖層

假設您已經建立此 KmlLayer

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

如果要將圖層從地圖移除,請呼叫 removeLayerFromMap()

layer.removeLayerFromMap();

存取 KML 容器

如果要存取已新增至圖層的任何容器,您可以針對已建立的圖層呼叫 getContainers()。如果要檢查當中是否有巢狀容器,您可以呼叫 hasContainers()。存取這些巢狀容器的方式類似於在圖層中執行的方式,您可以呼叫 getContainers()

存取 KmlLayerKmlContainer 中的「非巢狀」容器:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

存取 KmlLayerKmlContainer 中的「巢狀」容器:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

存取 KML 地點標記與 KML 地面疊加層

如果要存取已新增至圖層的任何地點標記或地面疊加層,您可以針對圖層或容器呼叫 getPlacemarks()getGroundOverlays()。擇一呼叫會分別反覆傳回 KmlPlacemarksKmlGroundOverlays

例如,若要從圖層存取 KmlPlacemark 物件:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

存取 KML 屬性

若要存取容器或地點標記中的任何屬性,請呼叫 getProperty() 並指定一個屬性金鑰。您也可以呼叫 hasProperty() 以檢查它是否存在。此範例說明如何在屬性 "name" 存在時,從容器擷取其屬性值。

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

參閱示範應用程式

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

KML 支援的功能

KML 元素 是否支援? 註解
<address> 部分 儲存為屬性值
<AddressDetails>
<Alias>
<altitude>
<altitudeMode>
<atom:author>
<atom:link>
<atom:name>
<BalloonStyle> 部分 只支援 <text>
<begin> 不適用 不支援 <TimeSpan>
<bgColor>
<bottomFov> 不適用 不支援 <PhotoOverlay>
<Camera>
<Change> 部分 只支援樣式變更
<color> 部分 包括 #AABBGGRR 與 #BBGGRR;在 <ScreenOverlay> 與 <GroundOverlay> 中不支援
<colorMode>
<cookie> 不支援 <NetworkLinkControl>
<coordinates>
<Create>
<Data>
<Delete>
<description> 限純文字,不支援 HTML 內容
<displayMode>
<displayName>
<Document>
<drawOrder>
<east>
<end> 不適用 不支援 <TimeSpan>
<expires> 不支援 <NetworkLinkControl>
<ExtendedData> 部分 只限不具類型的 <Data>,不得有 <SimpleData> 或 <Schema>,且不支援取代 form$[dataName] 的實體。
<extrude>
<fill>
<flyToView> 不支援 <NetworkLinkControl>
<Folder>
<gridOrigin> 不適用 不支援 <PhotoOverlay>
<GroundOverlay>
<heading>
<hotSpot>
<href>
<httpQuery>
<Icon>
<IconStyle>
<ImagePyramid> 不適用 不支援 <PhotoOverlay>
<innerBoundaryIs> 從 <LinearRing> 順序暗示
<ItemIcon> 不適用 不支援 <ListStyle>
<key>
<kml>
<LabelStyle>
<latitude>
<LatLonAltBox>
<LatLonBox>
<leftFov> 不適用 不支援 <PhotoOverlay>
<LinearRing>
<LineString>
<LineStyle>
<Link>
<linkDescription> 不適用 不支援 <NetworkLinkControl>
<linkName> 不適用 不支援 <NetworkLinkControl>
<linkSnippet> 不適用 不支援 <NetworkLinkControl>
<listItemType> 不適用 不支援 <ListStyle>
<ListStyle>
<Location> 不適用 不支援 <Model>
<Lod>
<longitude>
<LookAt>
<maxAltitude>
<maxFadeExtent>
<maxHeight> 不適用 不支援 <PhotoOverlay>
<maxLodPixels>
<maxSessionLength>
<maxWidth> 不適用 不支援 <PhotoOverlay>
<message>
<minAltitude>
<minFadeExtent>
<minLodPixels>
<minRefreshPeriod> <NetworkLink>
<Model>
<MultiGeometry>
<name>
<near> 不適用 不支援 <PhotoOverlay>
<NetworkLink>
<NetworkLinkControl>
<north>
<open> 儲存為屬性值
<Orientation> 不適用 不支援 <Model>
<outerBoundaryIs> 從 <LinearRing> 順序暗示
<outline>
<overlayXY>
<Pair>
<phoneNumber> 部分 儲存為屬性值
<PhotoOverlay>
<Placemark>
<Point>
<Polygon>
<PolyStyle>
<range>
<refreshInterval>
<refreshMode>
<refreshVisibility>
<Region>
<ResourceMap> 不適用 不支援 <Model>
<rightFov> 不適用 不支援 <PhotoOverlay>
<roll> 不適用 不支援 <Camera> 與 <Model>
<rotation>
<rotationXY>
<Scale> 不適用 不支援 <Model>
<scale>
<Schema>
<SchemaData>
<ScreenOverlay>
<screenXY> 不適用 不支援 <ScreenOverlay>
<shape> 不適用 不支援 <PhotoOverlay>
<SimpleData> 不適用 不支援 <SchemaData>
<SimpleField> 不適用 不支援 <Schema>
<size>
<Snippet>
<south>
<state> 不適用 不支援 <ListStyle>
<Style>
<StyleMap> 部分 不支援著重展示的樣式。不支援內嵌 StyleMaps
<styleUrl>
<targetHref> 不支援 <Alias>
<tessellate>
<text>
<textColor>
<tileSize> 不適用 不支援 <PhotoOverlay>
<tilt>
<TimeSpan>
<TimeStamp>
<topFov> 不適用 不支援 <PhotoOverlay>
<Update> 不適用 不支援 <NetworkLinkControl>
<value>
<viewBoundScale>
<viewFormat>
<viewRefreshMode>
<viewRefreshTime>
<ViewVolume> 不適用 不支援 <PhotoOverlay>
<visibility>
<west>
<when> 不適用 不支援 <TimeStamp>
<width>

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

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