gpt4 book ai didi

javascript - 计算用户位置与 map 上所有标记之间的距离

转载 作者:行者123 更新时间:2023-12-02 14:41:09 24 4
gpt4 key购买 nike

自己完成了一些 Google Mpas 的工作,但停止了距离计算。我有一个用于定位用户当前位置标记的功能:

function myLocationMarker(latLng) {
var markerOptions = {
position: latLng,
map: map,
clickable: true
}
var myMarker = new MarkerWithLabel(markerOptions);

这个函数还放置了其他标记。我从数据库中获取数据,它放置了大约 1000 个标记。

var markers = []; //blank array from markers
function addMarker(lat, lng, info) { //info - needed for database
var pt = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({ //marker options
position: pt,
icon: icon,
map: map
});
markers.push(marker); //pushing every marker to markers array

但我需要的是它们之间的距离。如何通过 addMarker 函数计算 myLocationMarker 与 map 上每个其他标记之间的距离?

最佳答案

您可以使用 directionsService 来了解 map 上两个标记之间的距离取决于 travelling mode您选择(“驾驶”“步行”“自行车”“交通”)。

如果你想计算空气距离,你将需要一些带有半正弦公式的几何图形(检查此处的代码:https://stackoverflow.com/a/1502821/2314737)

这是一个带有“DRIVING”的示例

function calculateAndDisplayRoute(directionsService, directionsDisplay, pointA, pointB, outputTxt) {
var selectedMode = "DRIVING";
directionsService.route({
origin: pointA,
destination: pointB,
unitSystem: google.maps.UnitSystem.METRIC,
travelMode: google.maps.TravelMode[selectedMode]
}, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);

outputTxt.innerHTML = Math.round(directionsDisplay.getDirections().routes[directionsDisplay.getRouteIndex()].legs[0].distance.value / 1000) + "Km";
} else {
window.alert('Directions request failed due to ' + status);
}
});
}

这是一个演示 http://jsfiddle.net/user2314737/fLogwsff/

编辑:或者,您可以使用spherical geometry中的computeDistanceBetween函数。包

computeDistanceBetween(from:LatLng, to:LatLng, radius?:number)
Return Value: number Returns the distance, in meters, between two LatLngs. You can optionally specify a custom radius. The radius defaults to the radius of the Earth.

var distance = google.maps.geometry.spherical.computeDistanceBetween(pointA, pointB);
// by default distance is in meters
distance = Math.round(distance/ 1000) + "Km";

更新的演示:http://jsfiddle.net/user2314737/qxrg4o3y/

关于javascript - 计算用户位置与 map 上所有标记之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com