Javascript 计算用户位置和地图上所有标记之间的距离

Javascript 计算用户位置和地图上所有标记之间的距离,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我自己做了一些谷歌Mpas的东西,但停止了距离计算。 我有一个定位用户当前位置标记的功能: function myLocationMarker(latLng) { var markerOptions = { position: latLng, map: map, clickable: true } var myMarker = new MarkerWithLabel(markerOptions); 这个函数会放置其他标记。

我自己做了一些谷歌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
和地图上其他每个标记之间的距离

您可以使用
方向服务
知道地图上两个标记之间的距离取决于您选择的方向(
“驾驶”
“步行”
“自行车”
“交通”

如果你想计算空中距离,你需要一些哈弗森公式的几何图形(检查这里的代码:)

下面是一个关于
“驾驶”

这里有一个演示

编辑:或者,您可以使用软件包中的
computeDistanceBetween
功能

计算距离介于之间(从:板条,到:板条,半径?:编号)
返回值:数字返回两个板条之间的距离(以米为单位)。 可以选择指定自定义半径。半径默认为 地球的半径


更新的演示:

您可以使用
方向服务
知道地图上两个标记之间的距离取决于您选择的方向(
“驾驶”
“步行”
“自行车”
“交通”

如果你想计算空中距离,你需要一些哈弗森公式的几何图形(检查这里的代码:)

下面是一个关于
“驾驶”

这里有一个演示

编辑:或者,您可以使用软件包中的
computeDistanceBetween
功能

计算距离介于之间(从:板条,到:板条,半径?:编号)
返回值:数字返回两个板条之间的距离(以米为单位)。 可以选择指定自定义半径。半径默认为 地球的半径

更新的演示:

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);
    }
  });
}
var distance = google.maps.geometry.spherical.computeDistanceBetween(pointA, pointB);
// by default distance is in meters
distance = Math.round(distance/ 1000) + "Km";