computeDistanceBetween
是 Google Maps JavaScript API v3 中的一个几何工具方法,用于计算两个经纬度坐标点之间的球面距离(大圆距离)。
google.maps.geometry.spherical.computeDistanceBetween(from, to)
from
: 起点坐标(LatLng 对象)to
: 终点坐标(LatLng 对象)computeDistanceBetween
方法默认返回的就是公制单位(米),这是国际单位制中的标准长度单位。如果需要其他公制单位:
distance / 1000
distance * 100
// 初始化地图
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 34.0522, lng: -118.2437 }, // 洛杉矶
zoom: 8,
});
// 定义两个点
const point1 = new google.maps.LatLng(34.0522, -118.2437); // 洛杉矶
const point2 = new google.maps.LatLng(40.7128, -74.0060); // 纽约
// 计算距离(米)
const distanceInMeters = google.maps.geometry.spherical.computeDistanceBetween(point1, point2);
// 转换为千米
const distanceInKm = distanceInMeters / 1000;
console.log("距离: " + distanceInMeters + " 米");
console.log("距离: " + distanceInKm + " 千米");
// 在地图上显示标记和距离
new google.maps.Marker({ position: point1, map: map, title: "洛杉矶" });
new google.maps.Marker({ position: point2, map: map, title: "纽约" });
const infoWindow = new google.maps.InfoWindow({
content: "洛杉矶到纽约的距离: " + distanceInKm.toFixed(2) + " 千米",
position: { lat: 37.5, lng: -96.0 }
});
infoWindow.open(map);
}
原因:可能是坐标点顺序错误或坐标格式不正确 解决:确保使用正确的 LatLng 对象,纬度在前,经度在后
原因:方法默认返回米 解决:手动转换为所需单位(如千米、英里等)
错误:google.maps.geometry is undefined
解决:在加载 Maps API 时添加 libraries=geometry
参数
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry"></script>
注意:方法会自动处理跨半球的情况,包括跨越国际日期变更线
没有搜到相关的文章