做的H5放在安卓和IOS的APP的webview中,怎么调起百度地图或高德的导航服务?
js可以调起手机上安装的APP,H5使用百度地图就会调起百度地图APP,使用的高德地图就会调起高德地图APP,应该都是URI API
百度:http://lbsyun.baidu.com/index...
高德:http://lbs.amap.com/api/uri-a...
不知道是不是题主要的~
高德地图和百度地图可以用scheme调起地图,具体可参考API,里面讲的很清楚,配置好相应的Schema之后根据例子使用就好了。
百度:http://lbsyun.baidu.com/index...
高德: http://lbs.amap.com/api/uri-a...
两者都支持用H5通过URL调起或者通过原生调起,我之前的做法是原生写好调用的方法,然后开放接口给H5调用。
一下是我调起地图的Android代码,IOS也类似。仅供参考:
@JavascriptInterface
public void openMap(final String address) {
Log.i("WebView", "OpenMap");
webview.post(new Runnable() {
@Override
public void run() {
String url = "";
if (isAppInstalled(context, "com.autonavi.minimap")) {
url = "amapuri://poi?sourceApplication=ewpower.com&keywords="+address;
showToast("启动高德地图");
}else if (isAppInstalled(context, "com.baidu.BaiduMap")) {
url = "baidumap://map/geocoder?src=openApiDemo&address="+address;
showToast("启动百度地图");
} else {
showToast("检测到您未安装地图APP,无法开始导航,建议您安装最新版的高德地图或百度地图");
return;
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
//将功能Scheme以URI的方式传入data
Uri uri = Uri.parse(url);
intent.setData(uri);
//启动该页面即可
context.startActivity(intent);
}
});
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
使用scheme打开即可,app接受到scheme请求后需要特殊处理。