swift iOS9之后,打开第三方地图导航

先看实现后的效果,会自动检测手机安装的第三方地图。




step 1 在info.plist 里添加 URL Scheme


百度地图:baidumap://

高德地图:iosamap://

google地图:comgooglemaps://

腾讯地图:qqmap://


step 2 代码部分

func creatOptionMenu(){
        optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
        
        if(SHARE_APPLICATION.canOpenURL(NSURL(string:"qqmap://")!) == true){
            let qqAction = UIAlertAction(title: "腾讯地图", style: .Default, handler: {
                (alert: UIAlertAction!) -> Void in
                let urlString = "qqmap://map/routeplan?from=我的位置&type=drive&tocoord=\(self.centerLat),\(self.centerLng)&to=\(self.siteTitle)&coord_type=1&policy=0"
                let url = NSURL(string:urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
                SHARE_APPLICATION.openURL(url!)
                
            })
            optionMenu.addAction(qqAction)
        }
        
        if(SHARE_APPLICATION.canOpenURL(NSURL(string:"iosamap://")!) == true){
            let gaodeAction = UIAlertAction(title: "高德地图", style: .Default, handler: {
                (alert: UIAlertAction!) -> Void in
                let urlString = "iosamap://navi?sourceApplication=app名&backScheme=iosamap://&lat=\(self.centerLat)&lon=\(self.centerLng)&dev=0&style=2"
                let url = NSURL(string:urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
                SHARE_APPLICATION.openURL(url!)
            })
            optionMenu.addAction(gaodeAction)
        }
        
        if(SHARE_APPLICATION.canOpenURL(NSURL(string:"comgooglemaps://")!) == true){
            let googleAction = UIAlertAction(title: "Google地图", style: .Default, handler: {
                (alert: UIAlertAction!) -> Void in
                let urlString = "comgooglemaps://?x-source=app名&x-success=comgooglemaps://&saddr=&daddr=\(self.centerLat),\(self.centerLng)&directionsmode=driving"
                let url = NSURL(string:urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
                SHARE_APPLICATION.openURL(url!)
                
            })
            optionMenu.addAction(googleAction)
        }
        
        let appleAction = UIAlertAction(title: "苹果地图", style: .Default, handler: {
            (alert: UIAlertAction!) -> Void in
            let loc = CLLocationCoordinate2DMake(self.centerLat, self.centerLng)
            let currentLocation = MKMapItem.mapItemForCurrentLocation()
            let toLocation = MKMapItem(placemark:MKPlacemark(coordinate:loc,addressDictionary:nil))
            toLocation.name = self.siteTitle
            MKMapItem.openMapsWithItems([currentLocation,toLocation], launchOptions: [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: NSNumber(bool: true)])
            
        })
        optionMenu.addAction(appleAction)
        
        if(SHARE_APPLICATION.canOpenURL(NSURL(string:"baidumap://")!) == true){
            let baiduAction = UIAlertAction(title: "百度地图", style: .Default, handler: {
                (alert: UIAlertAction!) -> Void in
                let urlString = "baidumap://map/direction?origin={{我的位置}}&destination=latlng:\(self.centerLat),\(self.centerLng)|name=\(self.siteTitle)&mode=driving&coord_type=gcj02"
                let url = NSURL(string:urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
                SHARE_APPLICATION.openURL(url!)
                
            })
            optionMenu.addAction(baiduAction)
        }
        
        let cancelAction = UIAlertAction(title: "取消", style: .Cancel, handler: {
            (alert: UIAlertAction!) -> Void in
        })
        optionMenu.addAction(cancelAction)
    }

点击方法里,实现弹出

self.presentViewController(optionMenu, animated: true, completion: nil)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值