很多专网环境下无法像互联网一样直接使用各厂提供的经纬度和地址的互逆转换,像gd或者bd等提供的离线转换引擎大概价位在200w+。

他们的算法基于两种,一是POI库,二是瓦片定位。 poi库的话其实是可以通过算法算出来的,然后经过长时间的处理转换即可得到真实的库信息,只不过时间漫长,不适合大多紧急性的业务,可以作为一个爱好进行尝试,根据提供的伪代码进行拼接尝试。如果嫌太费事或者紧急使用可以找我发送源码或POI点位库



/**
*计算距离
*/
public static Double getmeter(double long1, double lat1, double long2, double lat2) {
try {
double a, b, d, sa2, sb2;
lat1 = rad(lat1);
lat2 = rad(lat2);
a = lat1 - lat2;
b = rad(long1 - long2);

sa2 = Math.sin(a / 2.0);
sb2 = Math.sin(b / 2.0);
d = 2 * EARTH_RADIUS
* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
* Math.cos(lat2) * sb2 * sb2));
d= d * 1000;
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);

return bg.doubleValue();
} catch (Exception e) {
return null;
}
}


//核心计算方式:
double lat = Math.asin(Math.sin(startLat)*Math.cos(δ)+Math.cos(startLat)*Math.sin(δ)*Math.cos(angle));
double lon = startLong + Math.atan2(Math.sin(angle)*Math.sin(δ)*Math.cos(startLat),Math.cos(δ)-Math.sin(startLat)*Math.sin(lat));