高德地图和百度地图之间的坐标转换

高德转百度(火星坐标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); // 启动调用
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在JavaScript中,高德地图和腾讯地图坐标系是基于不同的地理编码服务,它们使用的坐标系统分别是: **高德地图坐标(AMap)**: 高德地图使用的是GCJ-02(GoogleChina02)坐标系统,这是中国的一个自定义坐标系,适用于中国大陆地区,主要用于处理在国内的地理位置数据。如果你有高德地图坐标,通常是按照这个系统生成的。 **腾讯地图坐标(TencentMap)**: 腾讯地图使用的是BD-09(百度09)坐标系统,也叫做Web Mercator,这是一个世界性的经纬度系统,类似于WGS84,但腾讯进行了本地化处理以适应中国的地形。 如果你需要在两种地图之间进行坐标转换,通常需要调用相应的API或服务,因为直接的坐标转换可能会有偏差。以下是一般的做法: 1. **手动转换**: 如果你手头有一些坐标点并且知道转换公式,可以使用经纬度的转换算法进行计算。但这种方法可能不够精确,特别是对于复杂的地理区域。 2. **使用第三方库**: 有些第三方JavaScript库提供了坐标转换的功能,比如`geohash.js`、`turf.js`等,可以方便地进行高德到腾讯,或者腾讯到高德的坐标转换。 3. **使用官方提供的转换服务**: 高德地图和腾讯地图都提供了坐标转换的API,例如高德地图有`AMap.Geocoder`的`convert`方法,腾讯地图有`coordConverter`工具类的`from_gcj02_to_wgs84`和`from_wgs84_to_bd09`方法,直接调用这些接口即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值