当我在我的应用程序中按下按钮时,我如何能够打开谷歌地图?

Posted

技术标签:

【中文标题】当我在我的应用程序中按下按钮时,我如何能够打开谷歌地图?【英文标题】:How would I be able to open google maps when I press a button in my app? 【发布时间】:2015-09-24 23:52:06 【问题描述】:

我有这个应用程序,当用户按下我的应用程序中的按钮时,我想使用谷歌地图或苹果地图打开。我怎么能做到这一点?是否有打开应用程序的地图链接之类的链接,还是其他?如果您能指出我正确的方向,那将非常有帮助。谢谢!我在下面设置了这样的按钮:

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) 

    for touch in (touches ) 
    let location = touch.locationInNode(self)
    let node = self.nodeAtPoint(location)

    if node.name == "openMaps" 

     //code to open google maps or apple maps....

    

【问题讨论】:

【参考方案1】:

使用这个:

if node.name == "openMaps" 
    let customURL = "comgooglemaps://"

    if UIApplication.sharedApplication().canOpenURL(NSURL(string: customURL)) 
        UIApplication.sharedApplication().openURL(NSURL(string: customURL))
    
    else 
        var alert = UIAlertController(title: "Error", message: "Google maps not installed", preferredStyle: UIAlertControllerStyle.Alert)
        var ok = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
        alert.addAction(ok)
        self.presentViewController(alert, animated:true, completion: nil)
    

您可以找到有关谷歌地图 URL 方案 here 的更多信息

编辑:您必须向您的info.plist 添加一个密钥才能使其工作。

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>googlechromes</string>
    <string>comgooglemaps</string>
</array>

编辑:更新后的Google Maps docs 也在上面的 plist 中添加了“googlechromes”。

【讨论】:

这不适用于 ios9。您可能会收到以下警告:“此应用不允许查询方案 comgooglemaps”。您还需要列出您的方案 LSApplicationQueriesSchemes 还有其他方法吗? 我收到了这个错误@LeoDabus 说有没有其他方法可以做到这一点而不会收到错误。 我查了一下,它说你必须在 xcode 的 info.plist 文件中将它列入白名单。我该怎么做? @coding22 编辑了解决此问题的答案。【参考方案2】:

在按钮点击(实际)时调用函数“directions()”,代码如下:

func directions() 
    // if GoogleMap installed
    if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) 
        UIApplication.shared.openURL(NSURL(string:
            "comgooglemaps://?saddr=&daddr=\(Float(event.addressLat)!),\(Float(event.addressLong)!)&directionsmode=driving")! as URL)

     else 
        // if GoogleMap App is not installed
        UIApplication.shared.openURL(NSURL(string:
            "https://maps.google.com/?q=@\(Float(event.addressLat)!),\(Float(event.addressLong)!)")! as URL)
    

为 LSApplicationQueriesSchemes 编辑您的 info.plist :

希望能有所帮助!

【讨论】:

以上是关于当我在我的应用程序中按下按钮时,我如何能够打开谷歌地图?的主要内容,如果未能解决你的问题,请参考以下文章

仅当我在主应用程序中按下活动中的按钮时,如何更新小部件

当我在模拟器中按下 Apple TV 游戏手柄按钮时,它们不会触发

当我在 Motionbuilder 中按下录制按钮时,它会显示“没有可录制的内容”。

如果在 WebView 中按下后退按钮,如何返回上一页?

在android中按下后退按钮后如何返回相同的选项卡?

当我在颤动中按下按钮时,如何将 Card 小部件替换为 TextField? [关闭]