Google 地圖網址架構 (iOS)

在搭載 iOS 9 以上版本的裝置上,您可以使用通用連結,在有 Google 地圖網址時啟動 Google 地圖。

您可以使用 Google 地圖網址配置啟動 iOS 版 Google 地圖應用程式,並執行搜尋、取得路線要求及顯示地圖檢視畫面。啟動 Google 地圖時,系統會自動將套件 ID 納入要求中。

使用 Google 地圖網址架構時,不需要 Google API 金鑰。

搭載 iOS 9 以上版本的裝置支援 iOS 版 Google 地圖的通用連結

如果網址符合下列規則運算式,且裝置搭載 iOS 9 以上版本,建議直接使用 openURL: 方法。

(http(s?)://)?
((maps\.google\.{TLD}/)|
 ((www\.)?google\.{TLD}/maps/)|
 (goo.gl/maps/))
.*

例如:

Swift

UIApplication.shared.openURL(URL(string:"https://www.google.com/maps/@42.585444,13.007813,6z")!)

Objective-C

[[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"https://www.google.com/maps/@42.585444,13.007813,6z"]];

總覽

網址配置可讓您從其他 iOS 應用程式或網頁應用程式啟動原生 iOS 應用程式。您可以在網址中設定選項,這些選項會傳遞至啟動的應用程式。iOS 版 Google 地圖應用程式支援下列網址配置:

  • comgooglemaps://comgooglemaps-x-callback://:這些配置可啟動 iOS 版 Google 地圖應用程式,並執行下列其中一項動作:

    • Display a map at a specified location and zoom level.
    • Search for locations or places, and display them on a map.
    • Request directions from one location to another. 路線可支援四種交通方式:開車、步行、騎單車和大眾運輸。
    • 在應用程式中新增導覽功能。
    • 在 iOS 8 以前,應用程式完成時會使用 comgooglemaps-x-callback:// 發出回呼。回呼通常用於將使用者帶回原本開啟 Google 地圖 iOS 版的應用程式。請注意,在 iOS 9 中,系統會在狀態列左上角自動提供「返回」連結。
  • comgooglemapsurl:// - 您可以使用從電腦版 Google 地圖網站衍生的網址,啟動 iOS 版 Google 地圖應用程式。也就是說,您可以為使用者提供原生行動體驗,而不只是載入 Google 地圖網站。

    • 原始網址可以是 maps.google.comgoogle.com/maps,也可以使用任何有效的頂層國家/地區網域,取代 com。您也可以傳遞 goo.gl/maps 重新導向網址。
    • 您可以使用 x-sourcex-success 參數,透過 comgooglemapsurl:// 網址架構發出回呼。

啟動 iOS 版 Google 地圖應用程式並執行特定功能

如要啟動 iOS 版 Google 地圖應用程式,並視需要執行其中一個支援的函式,請使用下列格式的網址架構:

comgooglemaps://?parameters

或是:

comgooglemaps-x-callback://?parameters

本文稍後會詳細說明參數。

檢查裝置上是否可使用 Google 地圖應用程式

在應用程式中向使用者顯示這些網址之前,請先確認應用程式是否已安裝。您的應用程式可使用下列程式碼檢查網址配置是否可用:

Swift

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
    [NSURL URLWithString:@"comgooglemaps://"]];

舉例來說,如要顯示紐約中央公園的地圖,可以使用下列程式碼:

Swift

if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
  UIApplication.shared.openURL(URL(string:
    "comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic")!)
} else {
  print("Can't use comgooglemaps://");
}

Objective-C

if ([[UIApplication sharedApplication] canOpenURL:
     [NSURL URLWithString:@"comgooglemaps://"]]) {
  [[UIApplication sharedApplication] openURL:
   [NSURL URLWithString:@"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic"]];
} else {
  NSLog(@"Can't use comgooglemaps://");
}

顯示地圖

使用網址配置,以指定縮放等級和位置顯示地圖。 You can also overlay other views on top of your map, or display Street View imagery.

參數

All of the following parameters are optional. 如未設定任何參數,網址架構會啟動 iOS 版 Google 地圖應用程式。

  • center:這是地圖可視區域的中心點。格式為以半形逗號分隔的 latitude,longitude 字串。
  • mapmode:設定顯示的地圖類型。可設為:standardstreetview。如未指定,系統會使用目前的應用程式設定。
  • views:開啟/關閉特定檢視畫面。可設為:satellitetraffictransit。您可以使用半形逗號分隔符號設定多個值。如果指定參數但未提供值,系統會清除所有檢視畫面。
  • zoom:指定地圖的縮放等級。

這個範例網址會顯示以紐約為中心的地圖,縮放比例為 14,並開啟交通資訊檢視畫面:

comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic

New York traffic map

其他範例如下:

comgooglemaps://?center=37.788463,-122.392545&zoom=12
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

Use this scheme to display search queries in a specified viewport location.

參數

除了用於顯示地圖的參數外,搜尋也支援 q 參數。

  • q:搜尋的查詢字串。

以下是搜尋指定位置附近「披薩」的網址範例:

comgooglemaps://?q=Pizza&center=37.759748,-122.427135

Nearby Pizza

其他範例如下:

comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA&center=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan&center=35.660888,139.73073&zoom=15&views=transit

顯示路線

使用這個配置,要求並顯示兩個地點之間的路線。 You can also specify the transportation mode.

參數

  • saddr:設定路線搜尋的起點。可以是經緯度或格式化地址查詢。如果是傳回多個結果的查詢字串,系統會選取第一個結果。如果值留白,系統會使用使用者目前的位置。
  • daddr:設定路線搜尋的終點。格式和行為與 saddr 相同。
  • directionsmode:交通方式。可設為:drivingtransitbicyclingwalking

以下範例網址會顯示 Google 紐約市辦公室和甘迺迪國際機場之間的大眾運輸路線:

comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit

大眾運輸路線

其他範例如下:

comgooglemaps://?saddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA+94043&daddr=Google+Inc,+345+Spear+Street,+San+Francisco,+CA&center=37.422185,-122.083898&zoom=10
comgooglemaps://?saddr=2025+Garcia+Ave,+Mountain+View,+CA,+USA&daddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA,+United+States&center=37.423725,-122.0877&directionsmode=walking&zoom=17

指定回呼網址

如要指定回呼網址,請務必使用 comgooglemaps-x-callback:// 網址通訊協定。這個架構遵循 x-callback-url 規格。使用這個配置呼叫 iOS 版 Google 地圖應用程式時,應用程式會在畫面頂端顯示按鈕。輕觸這個按鈕會向您指定的網址發出回呼。

comgooglemaps-x-callback:// 的要求必須採用以下格式:

comgooglemaps-x-callback://?parameters

參數

x-callback 網址配置接受與 comgooglemaps:// 網址配置相同的參數,但有下列額外參數。這兩個參數都是必填。

  • x-source:傳送 x-callback 要求的應用程式名稱。建議使用簡稱。
  • x-success:完成時要呼叫的網址。通常這是您自家應用程式的網址配置,可讓使用者返回原始應用程式。

請注意,應用程式必須註冊自己的網址通訊協定,才能回應回呼網址。

  1. 確認應用程式已註冊可回應回呼要求的網址架構。
  2. x-source 參數中傳遞回呼按鈕的標籤。
  3. x-success 參數中傳遞回呼網址。

以下範例會啟動 iOS 版 Google 地圖應用程式,並顯示以紐約為中心的地圖。應用程式也會顯示標示為「SourceApp」的按鈕。 點選「SourceApp」按鈕後,iOS 版 Google 地圖應用程式會向虛構的網址通訊協定 sourceapp://?resume=true 發出回呼。

comgooglemaps-x-callback://?center=40.765819,-73.975866&zoom=14
   &x-success=sourceapp://?resume=true
   &x-source=SourceApp

comgooglemaps:// URL 配置一樣,您應先確認裝置上是否提供 iOS 版 Google 地圖應用程式,以及是否支援 x-callback URL 配置。應用程式可使用下列程式碼,檢查網址配置是否可用:

Swift

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
   [NSURL URLWithString:@"comgooglemaps-x-callback://"]];

以下是網址範例,使用者在搜尋甜點後,可透過這個網址返回應用程式。

comgooglemaps-x-callback://?q=dessert&center=37.759748,-122.427135
   &x-success=sourceapp://?resume=true
   &x-source=Nom+Nom

在應用程式中新增導覽功能

啟動 iOS 版 Google 地圖應用程式並要求規劃路線,即可讓使用者輕鬆透過您的應用程式存取行車路線導航功能。您可以使用 comgooglemaps://comgooglemaps-x-callback:// URL 配置。

這個程式碼片段說明如何使用 comgooglemaps-x-callback:// 結構要求路線,並在使用者準備就緒時返回應用程式。程式碼會執行下列動作:

  1. 確認 comgooglemaps-x-callback:// 網址架構是否可用。
  2. 啟動 iOS 版 Google 地圖應用程式,然後要求前往紐約市的甘迺迪國際機場。將起點地址留白,即可要求從使用者目前位置取得路線。
  3. 在 iOS 版 Google 地圖應用程式中新增標示為「AirApp」的按鈕。按鈕標籤是由 x-source 參數定義。
  4. 使用者點選返回按鈕時,請呼叫虛構的網址配置 sourceapp://

Swift

let testURL = URL(string: "comgooglemaps-x-callback://")!
if UIApplication.shared.canOpenURL(testURL) {
  let directionsRequest = "comgooglemaps-x-callback://" +
    "?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
    "&x-success=sourceapp://?resume=true&x-source=AirApp"

  let directionsURL = URL(string: directionsRequest)!
  UIApplication.shared.openURL(directionsURL)
} else {
  NSLog("Can't use comgooglemaps-x-callback:// on this device.")
}

Objective-C

NSURL *testURL = [NSURL URLWithString:@"comgooglemaps-x-callback://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
  NSString *directionsRequest = @"comgooglemaps-x-callback://" +
      @"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
      @"&x-success=sourceapp://?resume=true&x-source=AirApp";
  NSURL *directionsURL = [NSURL URLWithString:directionsRequest];
  [[UIApplication sharedApplication] openURL:directionsURL];
} else {
  NSLog(@"Can't use comgooglemaps-x-callback:// on this device.");
}

從 Google 地圖桌面版網址啟動 iOS 版 Google 地圖應用程式

如果您的應用程式可存取預先存在的 Google 地圖網址 (例如網頁或資料庫中的網址),您可以使用這個通訊協定在 iOS 版 Google 地圖應用程式中開啟網址,為使用者提供最佳原生體驗。

  1. http://https:// 結構替換為 comgooglemapsurl://
  2. 如要使用回呼,請加入 x-sourcex-success 參數。這個架構遵循 x-callback-url 規格

支援的 Google 地圖網址格式

comgooglemapsurl:// 配置支援符合此規則運算式的網址,其中 {TLD} 是指任何有效的頂層國家/地區網域。為求明確,我們新增了換行符:

(http(s?)://)?
((maps\.google\.{TLD}/)|
 ((www\.)?google\.{TLD}/maps/)|
 (goo.gl/maps/))
.*

檢查 Google 地圖應用程式是否可用

首先,請確認裝置是否支援 iOS 版 Google 地圖應用程式,以及下列網址架構:

Swift

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
   [NSURL URLWithString:@"comgooglemapsurl://"]];

範例

一般 Google 地圖網址範例:

原始 Google 地圖網址:

https://www.google.com/maps/preview/@42.585444,13.007813,6z

使用網址配置:

comgooglemapsurl://www.google.com/maps/preview/@42.585444,13.007813,6z

一般 Google 地圖網址範例:

原始 Google 地圖網址:

https://maps.google.com/?q=@37.3161,-122.1836

使用網址配置:

comgooglemapsurl://maps.google.com/?q=@37.3161,-122.1836

以下是透過 x-callback 要求前往東京鐵塔路線的範例:

原始 Google 地圖網址:

http://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1

以下範例會啟動 iOS 版 Google 地圖應用程式,並顯示前往東京鐵塔的地圖和路線,如原始 Google 地圖網址 (上方) 所指定。應用程式也會顯示標示為「SourceApp」的按鈕。點選「SourceApp」按鈕時,iOS 版 Google 地圖應用程式會向虛構的網址通訊協定 sourceapp://?resume=true 發出回呼。

comgooglemapsurl://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
    &x-source=SourceApp
    &x-success=sourceapp://?resume=true