美文网首页iOS开发你需要知道的
iOS、安卓APP跳转百度和高德地图第三方导航(显示目的地地址最

iOS、安卓APP跳转百度和高德地图第三方导航(显示目的地地址最

作者: 福尔摩罗 | 来源:发表于2020-08-13 18:07 被阅读0次

    项目里遇到根据经纬度跳转第三方导航的需求,在网上找了一下,发现都是千篇一律的文章,而且不能正确显示目的地地址,无果后去百度和高德地图官网查找,位置十分隐蔽,给大家分享下

    手机上自己的APP调起高德地图APP有俩种方法

    • 一种是通过访问web的URI地址来实现,这样写的效果是,APP会跳转浏览器 访问H5页面的高德地图,如果设置 callnative参数为1时,浏览器会询问你是否需要打开高德地图app

    --- 访问地址示例

    https://uri.amap.com/navigation?from=116.478346,39.997361,startpoint&to=116.3246,39.966577,endpoint&via=116.402796,39.936915,midwaypoint&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0
    

    WEB-URI方式跳转官方文档

    • 另外一种就是通常使用到的直接跳转方法,直接通过高德APP的URL_TYPE来实现,这种方法需要根据出发点的经纬库及目的地的经纬度,而且可以设置目的地的地址,如果目的地地址为空,地图上会显示未地图上的点

    --- 访问地址示例(直接发起导航)

    iosamap://navi?sourceApplication=applicationName&poiname=fangheng&poiid=BGVIS&lat=36.547901&lon=104.258354&dev=1&style=2
    

    ---访问地址示例(路线规划)

    iosamap://path?sourceApplication=applicationName&sid=&slat=39.92848272&slon=116.39560823&sname=A&did=&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0
    

    直接跳转高德APP官方文档

    APP调起百度地图APP

    百度地图通过URL_TYPE方式直接跳转百度地图APP,链接内可以设置目的地地址,百度地图设置目的地地址时文档上说的比较隐晦,需要以下面格式设置 destination=name:目的地地址|latlng:40.007623,116.360582,中间以竖线隔开

    ---访问地址示例(路线规划)

    baidumap://map/direction?origin={{我的位置}}&destination=name:目的地地址|latlng:40.007623,116.360582&coord_type=bd09ll&mode=driving&src=ios.baidu.openAPIdemo
    
    

    直接跳转百度APP官方文档

    参数可以自己修改传入,需要注意的是百度和高德地图之间的经纬度不通用,需要转换

    
    /** 百度地图转高德地图坐标 */
    - (CLLocationCoordinate2D) bd_decrypt:(double)bd_lat bd_lon:(double)bd_lon
    {
      double x = bd_lon - 0.0065, y = bd_lat - 0.006;
      double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);
      double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);
      CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(z * sin(theta), z * cos(theta));
      return coordinate;
    }
    /** 高德地图转百度地图坐标 */
    - (CLLocationCoordinate2D) bd_decrypt:(double)gg_lat gg_lon:(double)gg_lon
    {
      double x = gg_lon, y = gg_lat;
      double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);
      double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);
      
      CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(z * sin(theta)+0.006, z * cos(theta)+0.0065);
      return coordinate;
    }
    
    

    相关文章

      网友评论

        本文标题:iOS、安卓APP跳转百度和高德地图第三方导航(显示目的地地址最

        本文链接:https://www.haomeiwen.com/subject/wmjidktx.html