切版网(2013~2023)

http://qieban.cn
做完设计,找切版网
QQ:6135833
微信:dingxiangming82

2022年04月15日

在js或者App中,调起第三方地图产品(URI API)的汇总

本文就“在js或者App中,调起第三方地图产品(URI API)的汇总”展开讨论,作者切版网,发布于2022年04月15日 全文共4942个字,预计阅读时长16分28秒

https://blog.csdn.net/xialong_927/article/details/79739241

URI API是为开发者提供直接调起第三方地图产品(Web地图、地图手机客户端)以满足特定业务场景下应用需求的程序接口,开发者只需按照接口规范构造一条标准的URI,便可在PC和移动端浏览器或移动开发应用中调起第三方地图产品,进行地图展示和检索、线路查询、导航等功能,无需进行复杂的地图功能开发。

一、百度地图URI API

地图调起API,官方连接地址:http://lbsyun.baidu.com/index.php?title=uri

a、实现原理

在百度地图的清单文件中对主页面设置了

android:scheme=”baidumap”

android:host=”map”

属性.指定了接受Uri的scheme为baidumap,host为map。当接收到指定Uri后,在主界面中对Uri进行解析和业务拆分,实现功能的调用。
其中

native:scheme为baidumap,host为map

web:scheme为bdapp,host为map
b、使用方法

第三方APP在使用该类型接口时,手机中需要安装Android百度地图,同时需要拼写符合协议规范的Uri串,通过srartActivity的方式进行调用。示例如下

Intent i1 = new Intent();

// 驾车导航

i1.setData(Uri.parse(“baidumap://map/navi?query=故宫”));

startActivity(i1);

//网页应用调起Android百度地图方式举例

<a href=”bdapp://map/navi?query=故宫”>驾车导航</a>
二、高德地图URI API

地图调起API,官方连接地址:http://lbs.amap.com/api/amap-mobile/summary/

如果您需要在浏览器中打开高德地图App,例如在H5页面中跳转到高德地图App,或者在本地App中加载的H5页面跳转到高德地图App,需要使用scheme调用,在H5中的链接中加入高德地图的Scheme即可,如(以导航为例):

<a href=”androidamap://navi?sourceApplication=appname&amp;poiname=fangheng&amp;lat=36.547901&amp;lon=104.258354&amp;dev=1&amp;style=2″>导航</a>
如果您需要在本地App中打开高德地图App,这种场景即在本地App中通过Java代码调用高德地图页面功能,此时就需要使用 Intent调用。同样以导航功能为例:

Java
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&amp;poiname=fangheng&amp;lat=36.547901&amp;lon=104.258354&amp;dev=1&amp;style=2”);
intent.setData(uri);

//启动该页面即可
startActivity(intent);
三、腾讯地图URI API

地图调起URI,官方链接地址:http://lbs.qq.com/uri_v1/index.html

已支持: Web / Wap 版腾讯地图产品,即将支持:Android / iOS版腾讯地图。

四、苹果地图

http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=cupertino

详细官方接口说明:

https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

五、谷歌地图
对于Android,是通过Intent形式打开Native Map.

Intent intent=new Intent(Intent.ACTION_VIEW);
String url = “https://maps.google.com/maps?q=31.207149,121.593086(金科路)&z=17&hl=en”;
Uri uri = Uri.parse(url);
intent.setData(uri);
startActivity(intent);

详细官方Intent接口说明:

http://developer.android.com/guide/components/intents-common.html#Maps

六、JS调用示例代码 nav.js

//获取浏览器信息
var browser = {
ua : function() {
var u = navigator.userAgent;
var isChrome = u.match(/Chrome\/([\d.]+)/)
|| u.match(/CriOS\/([\d.]+)/);
var isAndroid = u.match(/(Android);?[\s\/]+([\d.]+)?/);
var iosVersion = function() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [ parseInt(v[1], 10), parseInt(v[2], 10),
parseInt(v[3] || 0, 10) ];
}
}();
var chromeVersion = function() {
var chrome = navigator.userAgent.match(/Chrome\/(\d+)\./);
if (chrome) {
return parseInt(chrome[1], 10);
}
}();
var ios9 = iosVersion && iosVersion[0] >= 9;
var chrome18 = isChrome && isAndroid && chromeVersion
&& chromeVersion > 18;
return { // 移动终端浏览器版本信息
trident : u.indexOf(‘Trident’) > -1, // IE内核
presto : u.indexOf(‘Presto’) > -1, // opera内核
webKit : u.indexOf(‘AppleWebKit’) > -1, // 苹果、谷歌内核
gecko : u.indexOf(‘Gecko’) > -1 && u.indexOf(‘KHTML’) == -1, // 火狐内核
mobile : !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
iOS : !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
android : u.indexOf(‘Android’) > -1 || u.indexOf(‘Linux’) > -1, // android终端或uc浏览器
iPhone : u.indexOf(‘iPhone’) > -1, // 是否为iPhone或者QQHD浏览器
iPad : u.indexOf(‘iPad’) > -1, // 是否iPad
webApp : u.indexOf(‘Safari’) == -1, // 是否web应该程序,没有头部与底部
weChat : u.indexOf(‘MicroMessenger’) > -1,
UC : u.indexOf(‘UCBrowser’) > -1,
u3 : u.indexOf(‘U3’) > -1,
chrome : u.indexOf(‘Chrome’) > -1,
windowsPhone : u.indexOf(“Windows Phone”) > -1,
samsung : u.indexOf(“Samsung”) > -1,
QQ : (u.match(/\sQQ/i) != null ? u.match(/\sQQ/i).toLowerCase() == ” qq”
: false),
isChrome : isChrome,
isAndroid : isAndroid,
iosVersion : iosVersion,
chromeVersion : chromeVersion,
ios9 : ios9,
chrome18 : chrome18
};
}()
}
var ua = browser.ua;

// 打开地图App,开始导航
function openMapApp(lat, lng, addr) {
// 地图uri api数组
var uri = new Array();
if (ua.android) {
// 百度地图uri api
uri[0] = “bdapp://map/navi?location=” + lat + “,” + lng + “&query=”
+ addr;
// 高德地图uri api
uri[1] = “androidamap://navi?sourceApplication=xlwx&poiname=” + addr
+ “&lat=” + lat + “&lon=” + lng + “&dev=1&style=2”;
// 腾讯地图uri api
uri[2] = “qqmap://map/marker?marker=coord:” + lat + “,” + lng
+ “;title:” + addr + “&referer=xlwx”;
} else if (ua.iOS) {
// 百度地图uri api
uri[0] = “baidumap://map/navi?location=” + lat + “,” + lng + “&query=”
+ addr;
// 高德地图uri api
uri[1] = “iosamap://navi?sourceApplication=xlwx&poiname=” + addr
+ “&lat=” + lat + “&lon=” + lng + “&dev=1&style=2”;
// 腾讯地图uri api
uri[2] = “qqmap://map/marker?marker=coord:” + lat + “,” + lng
+ “;title:” + addr + “&referer=xlwx”;
// 苹果地图uri api
uri[3] = “http://maps.apple.com/?sll=” + lat + “,” + lng + “&address=”
+ addr;
}
//调用uri
if(uri.length == 0){
return;
}
window.location.href = uri[0];
//启动定时器time1
var time1 = setTimeout(function() {
// 若启动应用,则js会被中断较长时间,超出此范围
window.location.href = uri[1];
}, 2000);
//启动定时器time2
var time2 = setTimeout(function() {
// 若启动应用,则js会被中断较长时间,超出此范围
window.location.href = uri[2];
}, 4000);
//清除定时器
window.beforeunload = function() {
if(time1 != null){
clearTimeout(time1);
}
if(time2 != null){
clearTimeout(time2);
}
}
window.pagehide = function() {
if(time1 != null){
clearTimeout(time1);
}
if(time2 != null){
clearTimeout(time2);
}
}
window.onblur = function() {
if(time1 != null){
clearTimeout(time1);
}
if(time2 != null){
clearTimeout(time2);
}
}
}

完!!!

文章为原创或者来自于互联网,转载请注明来源,如果文章有侵权请联系,我们会及时删除。

更多相关文章

本站动态

切版网2023年发布改版

发布时间:2023年07月11日

切版网2023年发布改版,基于bootstrap4.0(流行的跨屏响应式框架)进行重构升级,整个页面看起来更加 […]

本站动态

UEditor如何新增自定义按钮方法

发布时间:2022年08月27日 标签:

UEditor是国内比较主流的编辑插件,是百度出品,不得不说百度虽然也做过很多产品最后放弃,不过ueditor […]

本站动态

f.lux, 一款真的很强大的护眼软件

发布时间:2022年08月27日

经常做前端切图开发,所以一定要保护好眼睛,最近在使用笔记本的时候,总是觉得有的时候太过于刺眼,此时就萌生了想要 […]

本站动态

外部h5页面跳转微信小程序

发布时间:2022年08月27日

h5页面通过微信提供的云开发-云函数功能进行直接跳转到微信指定小程序内部页面(h5界面可以是内嵌在某app内部 […]

本站动态

网页切图通过rel=”preload”进行内容预加载

发布时间:2022年08月27日

<link> 元素的 rel 属性的属性值preload能够让你在你的HTML页面中 <he […]

本站动态

vue 在标签中使用(data-XXX)自定义属性并获取的方法

发布时间:2022年08月27日

我们在vue中有时候为给标签加一些特有的属性, 当我们在标签上触发了事件之后, 就可以在 event 对象上面 […]

查看更多