ios打开第三方地图app
https://www.jianshu.com/p/691dd39cb28c
【ios调起 地图app】分三步:
1、配置相对于地图app的LSApplicationQueriesSchemes白名单
- 百度地图:baidumap
- 高德地图:iosamap
- 腾讯地图:qqmap
- 苹果地图:http://maps.apple.com/
2.判断是否能打开第三方地图
//判断是否能打开百度地图
NSURL * baidu_App = [NSURL URLWithString:@"baidumap://"];
if ([[UIApplication sharedApplication] canOpenURL:baidu_App]) { } //判断是否能打开高德地图
NSURL * gaode_App = [NSURL URLWithString:@"iosamap://"];
if ([[UIApplication sharedApplication] canOpenURL:gaode_App]) { } //判断是否能打开苹果地图
NSURL * apple_App = [NSURL URLWithString:@"http://maps.apple.com/"];
if ([[UIApplication sharedApplication] canOpenURL:apple_App]) {
[alert addAction:appleAction];
}
3.传经纬度调起地图导航
- 百度地图
NSURL * baidu_App = [NSURL URLWithString:@"baidumap://"];
if ([[UIApplication sharedApplication] canOpenURL:baidu_App]) {
// 如果集成的是百度地图就需要用bd09ll否则gcj02
bdString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%@,%@|name:%@&coord_type=bd09ll&mode=driving&src=ios.blackfish.XHY",Latitude,Longitude,adderss] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:bdString] options:@{} completionHandler:nil];
} - 高德地图
NSURL * gaode_App = [NSURL URLWithString:@"iosamap://"];
if ([[UIApplication sharedApplication] canOpenURL:gaode_App]) { //将BD-09坐标系转换为GCJ-02坐标系
CLLocationCoordinate2D location = [JZLocationConverter bd09ToGcj02:CLLocationCoordinate2DMake([Latitude doubleValue], [Longitude doubleValue])]; gdString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=ios.blackfish.XHY&dlat=%f&dlon=%f&dname=%@&style=2&dev=0",latitude,longitude,adderss] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; //先出现地点位置,然后再手动点击导航
}- 腾讯地图
- 可考虑
//调起腾讯地图APP,并在图上标注位置 qqmap://map/marker?marker=coord:39.892326,116.342763;title:超好吃冰激凌;addr:手帕口桥北铁路道口&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77
//腾讯地图
- (void)qqMap{ CLLocationCoordinate2D gcj02Coord = CLLocationCoordinate2DMake(百度坐标, 百度坐标); float shopLat = gcj02Coord.latitude;
float shoplng = gcj02Coord.longitude; NSString *urlString = [NSString stringWithFormat:@"qqmap://map/routeplan?type=bus&fromcoord=%f,%f&from=我的位置&referer=jikexiu",self.userLocation.location.coordinate.latitude, self.userLocation.location.coordinate.longitude]; urlString = [NSString stringWithFormat:@"%@&tocoord=%f,%f&to=%@",urlString, shopLat, shoplng, _orderModel.addressStr]; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:@{} completionHandler:^(BOOL success) { }];
}
- 苹果地图
NSURL * apple_App = [NSURL URLWithString:@"http://maps.apple.com/"];
if ([[UIApplication sharedApplication] canOpenURL:apple_App]) {
//将BD-09坐标系转换为GCJ-02坐标系
CLLocationCoordinate2D location = [JZLocationConverter bd09ToGcj02:CLLocationCoordinate2DMake([Latitude doubleValue], [Longitude doubleValue])]; MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *tolocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:location addressDictionary:nil]];
tolocation.name = adderss;
[MKMapItem openMapsWithItems:@[currentLocation,tolocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];
}
拓展:
安卓调用
if(outSysType == 10504){// 安卓 10504
switch(mapType) {
case 'tecentMap':
url = 'qqmap://map/routeplan?type=drive&from=&fromcoord=&to='+ title +'&tocoord=' + lat + ',' + lng + '&policy=0&referer=kgjhapp';
break;
case 'gaodeMap':
url = 'androidamap://route?sourceApplication=appName&slat=&slon=&sname=&dlat='+ lat + '&dlon='+ lng+'&dname='+title+'&dev=0&t=2';
break;
case 'baiduMap':
url = 'bdapp://map/direction?destination='+lat+','+lng+'&coord_type=gcj02&mode=driving&src=com.knssshy.sj';
break;
default:
break;
}
}
H5调用
switch(mapType) {
case 'tecentMap':
url = 'https://apis.map.qq.com/uri/v1/marker?marker=coord:' + lat + ',' + lng +';addr:'+ address +';title:'+ title + '&referer=keyfree';
break;
case 'gaodeMap':
url = 'https://uri.amap.com/marker?position='+ lng + ',' + lat +'&name='+ address +'&callnative=1';
break;
case 'baiduMap':
url = 'http://api.map.baidu.com/marker?location=' + lat + ',' + lng +'&title='+ title + '&content='+ address +'&output=html&src=webapp.reformer.appname&coord_type=gcj02';
break;
default:
break;
}
ios打开第三方地图app的更多相关文章
- iOS调用第三方地图App进行导航方法
前言 App内根据手机上装载的地图App将其显示在弹出的选择框,选择对应地图跳转进入地图导航.需要用到- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS( ...
- Android和IOS启动第三方地图APP
最近客户新提了需求,地址字段要能通过第三方的地图进行定位,于是对Android和IOS端进行了调整. 以下是调用地图部分的代码. android可按照包名来判断app是否存在: 方法: /* * ch ...
- ionic3 应用内打开第三方地图导航 百度 高德
1.安装检测第三方APP是否存在的插件 cordova plugin add cordova-plugin-appavailability --save npm install --save @ion ...
- uni-app路径规划(打开第三方地图实现)
百度网盘链接:https://pan.baidu.com/s/1-Ys13GFcnKXB1wkJotcwMw 提取码:16gp 把js文件放在common目录下 引入: import pathP ...
- iOS 调用第三方地图进行导航
//支持的地图 { _model = model; //支持的地图 NSMutableArray *maps = [NSMutableArray array]; //苹果原生地图-苹果原生地图方法和其 ...
- iOS打开百度地图、高德地图导航
1.判断手机里是否已经安装了百度地图或者高德地图: BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedAp ...
- 如何实现在H5里调起高德地图APP?(下)
这一篇文章将告诉您,如果直接打开高德地图APP,并展示路线规划.适合有定位的移动设备,可以查询到从“我的位置”到目的地的路径规划,并直接导航. 场景二.调起高德地图的路线规划功能 导航是目前JSAPI ...
- 如何实现在H5里调起高德地图APP?
http://www.cnblogs.com/milkmap/p/5912350.html 这一篇文章,将讲述如何在H5里调起高德地图APP,并展示兴趣点.适合于展示某个餐馆,商场等,让用户自行选择前 ...
- 如何实现在H5里调起高德地图APP
这一篇文章将告诉您,如果直接打开高德地图APP,并展示路线规划.适合有定位的移动设备,可以查询到从“我的位置”到目的地的路径规划,并直接导航. 场景二.调起高德地图的路线规划功能 导航是目前JSAPI ...
- Android 打开高德地图、百度地图进行导航;打开第三方App去导航;
抽成工具类了,复制下来就能直接用了,直接看代码吧: 高德地图Url Api: http://lbs.amap.com/api/amap-mobile/guide/android/navigation ...
随机推荐
- C语言中的快排函数——qsort
函数名 qsort(); 头文件 include<stdlib,h> 功能 对数组内的元素进行默认升序的快速排序 函数声明 void qsort( void *buf, size_t nu ...
- 多变量两两相互关系联合分布图的Python绘制
本文介绍基于Python中seaborn模块,实现联合分布图绘制的方法. 联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操 ...
- 超详细!Jmeter性能测试
前言 性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据. 测试流程: 需求分析→环境搭建→测试 ...
- MySQL 常用函数一览
本文选取一些mysql函数进行具体举例介绍,从功能.语法等多方面做个记录说明,附上执行截图 1.IP处理函数INET_ATON()和INET_NTOA() 1)INET_ATON(expr) 功能:给 ...
- mingw + cmake + vscode
.vscode settings.json { "cmake.generator": "MinGW Makefiles" } cmake-kits.js ...
- sort()排序以及多个属性数组对象排序(按条件排序)
原生排序 let arr = [5,2,1,4,9,8] for(let i = 0 ; i < arr.length ; i ++) { for(let j = 0 ; j < arr. ...
- day15-SpringMVC执行流程
SpringMVC执行流程 1.SpringMVC执行流程分析图 例子 (1)创建 HaloHandler package com.li.web.debug; import org.springfra ...
- JZOJ 2934. 【NOIP2012模拟8.7】字符串函数
题目大意 个等长的由大写英文字母构成的字符串 \(a\) 和 \(b\),从 \(a\) 中选择连续子串 \(x\),从 \(b\) 中选出连续子串y. 定义函数 \(f_{x,y}\) 为满足条件 ...
- 容忍和污点Taint和Toleration
说明: Taint在一类服务器上打上污点,让不能容忍这个污点的Pod不能部署在打了污点的服务器上. Toleration是让Pod容忍节点上配置的污点,可以让一些需要特殊配置的Pod能够调用到具有 污 ...
- Java学习笔记(一)环境安装与java基础
学习笔记01 两年前学的Java,现在已经忘得差不多了,跟着狂神说Java的视频从头开始学,希望能救一救ww 一.JDK JRE JVM 1. JDK java development kit 2. ...