谷歌地图:通用链接格式-目的地坐标-"不支持的链接谷歌地图无法打开此链接"

7

实现以下内容,正确的URL格式是什么:

  1. 在iOS上通过通用链接从另一个应用程序中打开谷歌地图应用。
  2. 基于两个坐标:纬度经度设置目的地,并让用户选择交通方式。

不起作用的方法:

let encoded = "https://www.google.com/maps/dir/?api=1&destination=-20.021999%2C57.579075"
let url = URL(string: encoded)!
UIApplication.shared.open(url, options: [:], completionHandler: nil)

此外,我尝试使用addingPercentEncoding方法对URL进行编码:
let string = "https://www.google.com/maps/dir/?api=1&destination=\(lat),\(long)"
let encoded = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let url = URL(string: encoded)!
UIApplication.shared.open(url, options: [:], completionHandler: nil)

在这两种情况下的结果是一样的: "不支持的链接 - Google 地图无法打开此链接" enter image description here 另一方面,如果我删除 Google 地图应用程序,或者在模拟器中尝试相同的代码,一切都正常工作,并且我实现了完全符合预期的结果: enter image description here 为什么同样的链接可以成功启动 "Web" 应用程序,但无法被本地应用程序识别? 相关字符串: https://www.google.com/maps/dir/?api=1&destination=-20.021999,57.579075 我正在遵循的指南:Google Maps 指南

请查看以下链接: https://dev59.com/v1wY5IYBdhLWcg3w7rn6 - Abdulaziz.Musaileekh
@A.K.M 那个答案不适用于通用链接。 - Richard Topchii
1个回答

6
我刚试过了你的第二种方法(使用addingPercentEncoding(withAllowedCharacters:)),并提供了给定的坐标,在Google Maps应用程序中得到了完全相同的错误。但是,当我将坐标更改为我的城市的坐标时,它奏效了。看起来谷歌地图无法根据(-20.021999,57.579075)对生成路线,根据您的第二个屏幕截图(网页版呈现为空白,没有地图呈现),我认为在您的情况下,它也在努力生成路线。然而,在这种情况下,为什么它会告诉我们该链接不受支持,这让我感到困惑。

这是完整的代码(我创建了一个空的单视图应用程序):

import UIKit


class ViewController: UIViewController {
  override func loadView() {
    super.loadView()
    let lat = 51.150992
    let long = 71.426444
    let string = "https://www.google.com/maps/dir/?api=1&destination=\(lat),\(long)"
    let encoded = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
    let url = URL(string: encoded)!
    UIApplication.shared.open(url)
  }
}

丹,非常有趣。显然,我提供的目的地点在毛里求斯,而测试期间使用的手机位于欧洲。你能提供打开谷歌地图的完整示例代码吗? - Richard Topchii
虽然你的坐标对我也没用,但我创建了另一组更接近我的实际位置的坐标,链接成功了。看起来是Google Maps的一个bug。 - Richard Topchii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接