APICloud打开三方地图整合
一直想系统的整理打开地图的方法,今天抽时间把了百度,高德,腾讯,苹果自带地图都整理出来了,闲话不多说,直接上干货
----------------------------------------------------------------------code start----------------------------------------------------------------------------------------------------
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
<title>apicloud百度,高德,腾讯,苹果自带地图导航</title>
</head>
<body>
<div>
<button id="baidu">打开百度地图</button>
<button id="gaode">打开高德地图</button>
<button id="tencent">打开腾讯地图</button>
<button id="apple">打开苹果地图</button>
</div>
</body>
<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript" src="../script/jquery.min.js"></script>
<script type="text/javascript">
apiready = function(){
//百度地图坐标
var dname = "凤凰山";
var lng = "113.857151";//经度
var lat = "22.68097";//纬度
$("#baidu").click(function () {
open_bmap(dname, lng, lat);
})
$("#gaode").click(function () {
var bd = bd_decrypt(lng, lat);
open_amap(dname, bd.lng, bd.lat);
})
$("#tencent").click(function () {
open_tmap(dname, lng, lat);
})
if(api.systemType == "ios") {
$("#apple").click(function () {
var bd = bd_decrypt(lng, lat);
open_pmap(dname, bd.lng, bd.lat);
})
}else{
$("#apple").hide();
}
}
//打开百度地图
function open_bmap(dname, lng, lat) {
var uri = 'baidumap://map/direction?destination=name:'+dname+'|latlng:'+lat+','+lng+'&mode=driving&src=andr.cheyw';
api.openApp({
uri: uri,
iosUrl: uri
}, function(ret, err) {
console.log(JSON.stringify(err))
if(err.msg=="Application not installed" || err.msg=="未找到可执行的应用") {
alert("请先安装百度地图");
}
});
}
//打开高德地图
function open_amap(dname, lng, lat) {
var uri = 'amapuri://route/plan/?dlat='+lat+'&dlon='+lng+'&dname='+dname+'&dev=0&t=0';
var iosUrl = 'iosamap://path?sourceApplication=cheyw&dlat='+lat+'&dlon='+lng+'&dname='+dname+'&dev=0&t=0';
api.openApp({
uri: uri,
iosUrl: iosUrl
}, function(ret, err) {
console.log(JSON.stringify(err))
if(err.msg=="Application not installed" || err.msg=="未找到可执行的应用") {
alert("请先安装高德地图");
}
});
}
//打开腾讯地图
function open_tmap(dname, lng, lat) {
var uri = 'qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&to='+dname+'&tocoord='+lat+','+lng+'&referer=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77';
api.openApp({
uri: uri,
iosUrl: uri
}, function(ret, err) {
console.log(JSON.stringify(err))
if(err.msg=="Application not installed" || err.msg=="未找到可执行的应用") {
alert("请先安装腾讯地图");
}
});
}
//打开苹果地图
function open_pmap(dname, lng, lat) {
var uri = 'http://maps.apple.com/?q='+dname+'&daddr='+lat+','+lng+'';
api.openApp({
uri: uri,
iosUrl: uri
}, function(ret, err) {
console.log(JSON.stringify(ret))
console.log(JSON.stringify(err))
});
}
//百度坐标转高德(传入经度、纬度)
function bd_decrypt(bd_lng, bd_lat) {
var X_PI = Math.PI * 3000.0 / 180.0;
var x = bd_lng - 0.0065;
var y = bd_lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
return {lng: gg_lng, lat: gg_lat}
}
//高德坐标转百度(传入经度、纬度)
function bd_encrypt(gg_lng, gg_lat) {
var X_PI = Math.PI * 3000.0 / 180.0;
var x = gg_lng, y = gg_lat;
var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
var bd_lng = z * Math.cos(theta) + 0.0065;
var bd_lat = z * Math.sin(theta) + 0.006;
return {bd_lat: bd_lat, bd_lng: bd_lng }
}
</script>
</html>
-----------------------------------------------------------------------------code end------------------------------------------------------------------------
特别注意:
1.高德地图IOS和android的uri是不一样的。
2.不要用api.appInstalled去判断是否安装应用,IOS9以上好像无法检测。
3.仔细看bd_decrypt,bd_encrypt两个方法,别写反。
4.腾讯地图的经纬度和百度的相同,苹果自带地图的经纬度和高德相同。
APICloud打开三方地图整合的更多相关文章
- uni-app路径规划(打开第三方地图实现)
百度网盘链接:https://pan.baidu.com/s/1-Ys13GFcnKXB1wkJotcwMw 提取码:16gp 把js文件放在common目录下 引入: import pathP ...
- Android 打开高德地图、百度地图进行导航;打开第三方App去导航;
抽成工具类了,复制下来就能直接用了,直接看代码吧: 高德地图Url Api: http://lbs.amap.com/api/amap-mobile/guide/android/navigation ...
- PIE SDK打开网络地图数据
1. 数据介绍 网络地图数据是在线地图服务发布出来的数据,其支持数据的网络查看和传输,极大的促进了GIS的发展. 目前PIE SDK支持百度地图.谷歌地图.高德地图.天地图.Bing地图.ArcGIS ...
- iOS打开百度地图、高德地图导航
1.判断手机里是否已经安装了百度地图或者高德地图: BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedAp ...
- 百度地图整合功能分享修正版[ZMap.js] 实例源码!
ZMap 功能说明 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是 ...
- 微信jssdk获取当前位置,以及打开微信地图
$(function() { var url = window.location.href; var userId = $("#userId").val(); // var ope ...
- ionic3 应用内打开第三方地图导航 百度 高德
1.安装检测第三方APP是否存在的插件 cordova plugin add cordova-plugin-appavailability --save npm install --save @ion ...
- 【IOS实例小计】打开google地图-web
-(void)openMaps:(id)sender{ NSString *addressText = @"1 Queen st, Auckland,NZ"; addressTex ...
- 二 、打开地图《苹果iOS实例编程入门教程》
该app为应用的功能为给你的iPhone打开google地图有效地址连接 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Si ...
随机推荐
- 如何查看 Python 全部内置变量和内置函数?
https://jingyan.baidu.com/article/7082dc1c071649e40a89bdb8.html Python 解释器内置了一些常量和函数,叫做内置常量(Built-in ...
- 如何用for..of.. 遍历一个普通的对象?
如何用for..of.. 遍历一个普通的对象? 首先了解一下for..of..: 它是es6新增的一个遍历方法,但只限于迭代器(iterator), 所以普通的对象用for..of遍历 是会报错的.下 ...
- js基础——对象和数组
1.Object类型 1)使用new运算符 var box = new Object();===>等同于 var box = Object();(省略new关键字) box.name ...
- P1073 奇数还是偶数
题目描述 给你 \(N(1 \le N \le 1000)\) 个数,你需要判断每个数是奇数还是偶数. 输入格式 输入的第一行包含一个整数 \(N(1 \le N \le 1000)\) . 接下来 ...
- 解决应用服务器变为集群后的Session问题
2.2.4.2 解决应用服务器变为集群后的Session问题 先来看一下什么是Session. 用户使用网站的服务,基本上需要浏览器与Web 服务器的多次交互.HTTP 协议本身是无状态的,需要基于H ...
- 如何抢占云栖大会C位?史上最强强强攻略来了
本文作者:阿里云头条 原文链接 本文为云栖社区原创内容,未经允许不得转载.
- git authentication failed for 或 fatal:not a git repository
第一种解决 (我的是第一种解决) github上更改密码之后,我在本地操作git发现出错,错误代码如上,在网上搜了一圈,没有解决问题,后发现需要进行如下操作: 进入控制面板>用户账号>凭据 ...
- boostrap-非常好用但是容易让人忽略的地方【3】:clearfix
代码 显示结果 代码 结果
- seajs源码学习(一)
今天是2015年12月4日,天气较为阴冷.(习惯性记下日期和天气,总要留些回忆给以后) 学习的最佳捷径是模仿,所以如果想快速提高javascript技术,捷径就是去读大神们的优秀源码.就像我们学说话一 ...
- Excel特殊符号的录入与录入的秘诀
软键盘就是输入法上的软键盘 右键单击软键盘 右键! 通过code函数得到符号的数字 按住alt键然后输入数字才可以得到符号 注意是在数字键盘 右边数字键盘区域 插入特殊符号 跳转方向的设置 如果超过 ...