博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高德地图百度地图导航坐标转换
阅读量:6322 次
发布时间:2019-06-22

本文共 2763 字,大约阅读时间需要 9 分钟。

项目中的定位商家服务搜索用的是高德地图,毕竟高德在地图这块做的比百度好(个人认为)。这里吐槽下百度的开发平台,上面开发文档及案例写的真不好,想找某个问题点很难找到和定位,希望百度改善下。

高德转百度(火星坐标gcj02ll–>百度坐标bd09ll)

private double[] gaoDeToBaidu(double gd_lon, double gd_lat) {    double[] bd_lat_lon = new double[2]; double PI = 3.14159265358979324 * 3000.0 / 180.0; double x = gd_lon, y = gd_lat; double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * PI); double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * PI); bd_lat_lon[0] = z * Math.cos(theta) + 0.0065; bd_lat_lon[1] = z * Math.sin(theta) + 0.006; return bd_lat_lon; }

百度转高德(百度坐标bd09ll–>火星坐标gcj02ll)

private double[] bdToGaoDe(double bd_lat, double bd_lon) {    double[] gd_lat_lon = new double[2]; double PI = 3.14159265358979324 * 3000.0 / 180.0; double x = bd_lon - 0.0065, y = bd_lat - 0.006; double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * PI); double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * PI); gd_lat_lon[0] = z * Math.cos(theta); gd_lat_lon[1] = z * Math.sin(theta); return gd_lat_lon; }

调用高德导航: 

1.AndroidAPI调用方式

/***     *      * @author James     * @Description 调用高德去导航     * @param mLatLng     * @param type */ public static void startNavByAmap(LatLng mLatLng, int type, Context mContext) { try { // 构造导航参数 NaviPara naviPara = new NaviPara(); // 设置终点位置 naviPara.setTargetPoint(mLatLng); // 设置导航策略,这里是避免拥堵 naviPara.setNaviStyle(type); // 调起高德地图导航 AMapUtils.openAMapNavi(naviPara, mContext); } catch (AMapException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

2,URI调用方式(不想下载SDK包使用URI调用也很方便)

Intent gddtIntent = new Intent("android.intent.action.VIEW",                    Uri.parse("androidamap://navi?sourceApplication=“name”&poiname="                            + poi + "&lat=" + lat + "&lon=" + lon + "&dev=" + 0 + "&style=" + 4)); gddtIntent.addCategory("android.intent.category.DEFAULT"); gddtIntent.setPackage("com.autonavi.minimap"); gddtIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(gddtIntent);

参数 

style导航策略

调用百度导航

1.AndroidAPI调用方式

double mLat1 = 39.915291;double mLon1 = 116.403857;// 百度大厦坐标 double mLat2 = 40.056858; double mLon2 = 116.308194; LatLng pt1 = new LatLng(mLat1, mLon1); LatLng pt2 = new LatLng(mLat2, mLon2); NaviParaOption para = new NaviParaOption() .startPoint(pt1).endPoint(pt2) .startName("天安门").endName("百度大厦"); try { // 调起百度地图导航 BaiduMapNavigation.openBaiduMapNavi(para, this); } catch (BaiduMapAppNotSupportNaviException e) { e.printStackTrace(); }

2,URI调用方式

intent = Intent             .getIntent("intent://map/navi?location="             + lonlat[1]             + ","             + lonlat[0] + "&type=" + strategyBD + "&coordType=bd09ll&src=thirdapp.navi.公司名字#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); mContext.startActivity(intent); // 启动调用

参数 

strategyBD 导航策略

转载地址:http://iicaa.baihongyu.com/

你可能感兴趣的文章
虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
查看>>
jsp+servlet+jdbc实现对数据库的增删改查
查看>>
here文档 here doc EOF重定向
查看>>
浅谈接口自动化测试
查看>>
TCP/IP(七)之玩转HTTP协议
查看>>
复杂可编程逻辑器件CPLD的基本结构
查看>>
mybatis下的分页,支持所有的数据库
查看>>
windows下面安装Python和pip终极教程
查看>>
Spring AOP中级——应用场景
查看>>
扩展Microsoft Graph数据结构(开放扩展)
查看>>
BZOJ 4236~4247 题解
查看>>
maven学习(上)- 基本入门用法
查看>>
《算法导论》读书笔记(二)
查看>>
可设置指定时间自己主动消失的 MessageBox实现
查看>>
Two Heads Are Often Better Than One
查看>>
5种样式实现div容器中三图摆放实例对比说明
查看>>
Expo大作战(四)--快速用expo构建一个app,expo中的关键术语
查看>>
java okhttp发送post请求
查看>>
laravel查找某个类拥有的方法:
查看>>
Handler相关
查看>>