一直想系统的整理打开地图的方法,今天抽时间把了百度,高德,腾讯,苹果自带地图都整理出来了,闲话不多说,直接上干货

----------------------------------------------------------------------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打开三方地图整合的更多相关文章

  1. uni-app路径规划(打开第三方地图实现)

    百度网盘链接:https://pan.baidu.com/s/1-Ys13GFcnKXB1wkJotcwMw 提取码:16gp 把js文件放在common目录下 引入:    import pathP ...

  2. Android 打开高德地图、百度地图进行导航;打开第三方App去导航;

    抽成工具类了,复制下来就能直接用了,直接看代码吧: 高德地图Url Api: http://lbs.amap.com/api/amap-mobile/guide/android/navigation ...

  3. PIE SDK打开网络地图数据

    1. 数据介绍 网络地图数据是在线地图服务发布出来的数据,其支持数据的网络查看和传输,极大的促进了GIS的发展. 目前PIE SDK支持百度地图.谷歌地图.高德地图.天地图.Bing地图.ArcGIS ...

  4. iOS打开百度地图、高德地图导航

    1.判断手机里是否已经安装了百度地图或者高德地图: BOOL hasBaiduMap = NO; BOOL hasGaodeMap = NO; if ([[UIApplication sharedAp ...

  5. 百度地图整合功能分享修正版[ZMap.js] 实例源码!

    ZMap 功能说明 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是 ...

  6. 微信jssdk获取当前位置,以及打开微信地图

    $(function() { var url = window.location.href; var userId = $("#userId").val(); // var ope ...

  7. ionic3 应用内打开第三方地图导航 百度 高德

    1.安装检测第三方APP是否存在的插件 cordova plugin add cordova-plugin-appavailability --save npm install --save @ion ...

  8. 【IOS实例小计】打开google地图-web

    -(void)openMaps:(id)sender{ NSString *addressText = @"1 Queen st, Auckland,NZ"; addressTex ...

  9. 二 、打开地图《苹果iOS实例编程入门教程》

    该app为应用的功能为给你的iPhone打开google地图有效地址连接 现版本 SDK 8.4 Xcode 运行Xcode 选择 Create a new Xcode project ->Si ...

随机推荐

  1. Element节点输出到System.out

    protected void writeElementToFile(Element valrespEle) { try { TransformerFactory transformerFactory ...

  2. H3C DHCP服务器基本配置示例

  3. git 安装及基本配置

    git 基本上来说是开发者必备工具了,在服务器里没有 git 实在不太能说得过去.何况,没有 git 的话,面向github编程 从何说起,如同一个程序员断了左膀右臂. 你对流程熟悉后,只需要一分钟便 ...

  4. linux进程延迟

    #include <linux/wait.h> long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, ...

  5. H3C使用ping命令--用户视图

    完整的ping命令,用于下面参考 <H3C>ping 1.1.1.1   PING 1.1.1.1: 56  data bytes, press CTRL_C to break     R ...

  6. 2019-8-31-dotnet-Framework-源代码-·-Ink

    title author date CreateTime categories dotnet Framework 源代码 · Ink lindexi 2019-08-31 16:55:58 +0800 ...

  7. Linux 内核硬件抽象

    我们结束 PCI 的讨论, 通过快速看一下系统如何处理在市场上的多种 PCI 控制器. 这只 是一个信息性的小节, 打算来展示给好奇的读者, 内核的面向对象分布如何向下扩展到最 低层. 用来实现硬件抽 ...

  8. 5.29 SD省队培训D1

    5.29 SD省队培训D1 自闭的一天 T1 梦批糼 先咕一咕(两天之内一定补上) T2 等你哈苏德 继续咕(一星期之内补上) T3喜欢最最痛 四十分做法: 首先,我们发现同一个点加两条额外边是一件非 ...

  9. c#中索引器

    https://zhidao.baidu.com/question/59675980.html 不是必要的..相当于数学中的一个函数

  10. 大数据基石——Hadoop与MapReduce

    本文始发于个人公众号:TechFlow 近两年AI成了最火热领域的代名词,各大高校纷纷推出了人工智能专业.但其实,人工智能也好,还是前两年的深度学习或者是机器学习也罢,都离不开底层的数据支持.对于动辄 ...