アプリ方AppleMap, GoogleMapに遷移する
AppleMapへの遷移
AppleMapへ遷移する時は最小単位のURLhttp://maps.apple.com/?に対してパラメータをくっつけていくことでどのように開くかを指定することができる。
以下のコードは東京タワーの緯度経度を中心にピンを立てるサンプルです。
let latitude = 35.658584
let longitude = 139.7454316
let pinName = "東京タワー"
let urlString: String = "http://maps.apple.com/?ll=\(latitude),\(longitude)&q=\(pinName)"
let encodeUrlString: String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
if let url = URL(string: encodeUrlString) {
UIApplication.shared.open(url)
}
パラメータの一覧は以下ドキュメントにまとまっています。https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html
GoogleMapへの遷移
GoogleMapへ遷移するときもhttps://maps.google.com/maps
という最小単位にパラメータをくっつけていくことでどう開くかを指定することができます。
let latitude = 35.658584
let longitude = 139.7454316
let pinName = "東京タワー"
let urlString = "https://maps.google.com/maps?q=\(pinName)¢er\(latitude.description),\(longitude.description)"
let encodeUrlString: String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
if let url = URL(string: encodeUrlString) {
UIApplication.shared.open(url)
}
パラメータは以下のドキュメントを参照
https://developers.google.com/maps/documentation/urls/ios-urlscheme
備考
AppleMapがダウンロードされていない場合はApple Storeへの遷移します、GoogleMapの場合はWebでも開きますがダイアログでApple Storeへの遷移が促されます。
URLをencodeしていますが、日本語がURLに混じって言える状態でencodeせずに遷移させると動作しません。