Android 端
如果您需要在浏览器中打开高德地图App,例如在H5页面中跳转到高德地图App,或者在本地App中加载的H5页面跳转到高德地图App,需要使用scheme调用,在H5中的链接中加入高德地图的Scheme即可,如(以导航为例):导航
如果您需要在本地App中打开高德地图App,这种场景即在本地App中通过Java代码调用高德地图页面功能,此时就需要使用 Intent调用。同样以导航功能为例:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
//将功能Scheme以URI的方式传入data
Uri uri = Uri.parse("androidamap://navi?sourceApplication=appname&poiname=fangheng&lat=36.547901&lon=104.258354&dev=1&style=2");
intent.setData(uri);
//启动该页面即可
startActivity(intent);
上述URI调用参数的具体含义请参见Android URI 详细文档
iOS 端
步骤 1:配置白名单 由于iOS的限制,iOS系统在9之后的版本中,如果开发者的app希望调起高德地图,必须在自己app的设置中配置白名单。
配置方法:
1、找到您的Info.plist文件
2、在文件中添加key:LSApplicationQueriesSchemes,类型是Array,如果曾经添加过,无需再次添加。
3、Array中添加一个item,类型为String,值为iosamap。
添加完成后截图如下:
步骤 2:判断是否安装了高德地图
配置完成后,您就可以在自己的app中判断高德地图是否已安装。
示例代码如下:NSURL *scheme = [NSURL URLWithString:@"iosamap://"];
BOOL canOpen = [[UIApplication sharedApplication] canOpenURL:scheme];
如果canOpen为YES,则安装了高德地图;如果canOpen为NO,则未安装高德地图。
步骤 3:调起高德地图
使用iOS提供高德API即可调起高德地图,需要注意的是从iOS10版本起,API有更新。NSURL *myLocationScheme = [NSURL URLWithString:@"iosamap://myLocation?sourceApplication=applicationName"];
if ([[UIDevice currentDevice].systemVersion integerValue] >= 10) {
//iOS10以后,使用新API
[[UIApplication sharedApplication] openURL:myLocationScheme options:@{} completionHandler:^(BOOL success) {
NSLog(@"scheme调用结束");
}];
} else {
//iOS10以前,使用旧API
[[UIApplication sharedApplication] openURL:myLocationScheme];
}