腾讯地图获取经纬度
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Insert title here</title>
</head>
<body>
<input id="lat" name="lat" type="hidden">
<input id="lng" name="lng" type="hidden">
<iframe id="geoPage" width=0 height=0 frameborder=0 style="display:none;" scrolling="no"
src="https://apis.map.qq.com/tools/geolocation?key=YB6BZ-WNSL6-3ULSN-MHCPV-3C5MK-TWFMS&referer=myapp">
</iframe>
<script>
$(function(){
window.addEventListener('message', function(event) {
// 接收位置信息
var loc = event.data;
$("#lat").val(loc.lat);
$("#lng").val(loc.lng);
console.log('location', loc.lat);
console.log('location', loc.lng);
}, false);
});
</script>
</body>
</html>
官方文档:https://lbs.qq.com/webApi/component/componentGuide/componentGeolocation
后台计算两个坐标之间的距离:
package com.pantryn.qserver.utils;
/**
* @author LYX
* @create 2021-07-24 14:18
*/
public class LocationUtils {
private static double EARTH_RADIUS = 6378.137;
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* 通过经纬度获取距离(单位:米)
*
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return 距离
*/
public static double getDistance(double lat1, double lng1, double lat2,
double lng2) {
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 * 10000d) / 10000d;
s = s * 1000;
return s;
}
public static void main(String[] args) {
double distance = getDistance(34.2675560000, 108.9534750000,
34.2464320000, 108.9534750000);
System.out.println("距离" + distance / 1000 + "公里");
}
}
参考地址:https://blog.csdn.net/baidu_29701003/article/details/78542938