使用computeDistanceBetween 计算出用户当前位置与固定点之间的距离

0 javascript google-maps geolocation google-maps-api-3

我目前正在尝试为我的一个大学项目编写一个简单的网络应用程序原型。我对 Javascript 还很陌生,但遇到了一些麻烦。

我创建了一个地图,在用户的当前位置放置一个标记,并在一个固定点放置一个标记。这是到目前为止的Javascript:

var map;

function load() {
    var myOptions = {
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map"), myOptions);
    navigator.geolocation.getCurrentPosition(displayOnMap);
}

var pin;

function displayOnMap(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    var initialLocation = new google.maps.LatLng(latitude, longitude);
    map.setCenter(initialLocation);
    var marker = new google.maps.Marker({
        map: map,
        position: initialLocation,
    });
    loadMarkers();
}

function loadMarkers() {
    var xmlMarkersRequest = new XMLHttpRequest();
    xmlMarkersRequest.onreadystatechange = function() {
        if (xmlMarkersRequest.readyState === 4) {
            var xml = xmlMarkersRequest.responseXML;
            var markersArray = xml.documentElement.getElementsByTagName("marker");
            for (var i = 0; i < markersArray.length; i++) {
                var id = Number(markersArray[i].getAttribute("id"));
                var latitude = markersArray[i].getAttribute("latitude");
                var longitude = markersArray[i].getAttribute("longitude");
                var point = new google.maps.LatLng(
                    parseFloat(latitude),
                    parseFloat(longitude));
                var marker2 = new google.maps.Marker({
                    map: map,
                    position: point,
                    zIndex: id
                });
            }
        }
    }
    xmlMarkersRequest.open('GET', 'markers.xml', false);
    xmlMarkersRequest.send(null);
}
Run Code Online (Sandbox Code Playgroud)

这里的一切都按照我想要的方式工作。

我只是不确定如何使用 computeDistanceBetween 来返回用户的初始位置 (initialLocation) 和标记位置之间的距离。

标记信息存储在一个 XML 文件中,因为最初我计划添加多个。但是我的网站只需要一个标记,所以如果我必须将固定标记的信息写入 Javascript,这不是问题。

我希望这个问题是有道理的!

MrU*_*own 5

  1. 您需要加载几何库

    http://maps.googleapis.com/maps/api/js?key=YOURKEY&libraries=geometry

  2. 两点之间的距离是它们之间最短路径的长度。这条最短路径称为测地线。在球体上,所有测地线都是一个大圆的段。要计算这个距离,调用computeDistanceBetween() 传递两个LatLng对象

例子:

var a = new google.maps.LatLng(0,0);
var b = new google.maps.LatLng(0,1);
var distance = google.maps.geometry.spherical.computeDistanceBetween(a,b);
Run Code Online (Sandbox Code Playgroud)

distance将以为单位的距离。