百度和高德地图坐标互相转换代码

//百度坐标转高德(传入经度、纬度)
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
    };
}

要实现这个功能,需要用到以下步骤: 1. 获取两个城市的经纬度坐标。可以使用百度地图API或高德地图API等第三方地图服务,根据城市名或地点名称查询对应的经纬度坐标。 2. 根据经纬度坐标计算两个城市之间的距离。可以使用Java中的经纬度计算公式,比如Haversine公式等。 3. 对于大规模的数据查询,可以使用数据库进行存储索引,以提高查询效率。 下面是一个示例代码,可以计算广州深圳之间的距离: ``` import java.lang.Math; public class CityDistance { // 地球半径 private static final double EARTH_RADIUS = 6371.393; // 将角度转换为弧度 private static double rad(double d) { return d * Math.PI / 180.0; } // 计算两个经纬度坐标之间的距离 public static double getDistance(double lng1, double lat1, double lng2, double lat2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; s = Math.round(s * 1000) / 1000.0; return s; } public static void main(String[] args) { // 广州的经纬度坐标 double lng1 = 113.264434; double lat1 = 23.129162; // 深圳的经纬度坐标 double lng2 = 114.057868; double lat2 = 22.543099; double distance = getDistance(lng1, lat1, lng2, lat2); System.out.println("广州深圳之间的距离为:" + distance + " km"); } } ``` 这段代码输出结果为:广州深圳之间的距离为:128.792 km。可以根据需要修改输入的经纬度坐标城市名称来计算其他城市之间的距离。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值