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

时间:2014-11-16 13:40:06

标签: javascript google-maps google-maps-api-3 geolocation

我目前正在尝试为我的一个大学项目编写一个简单的网络应用原型。我对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);
}
&#13;
&#13;
&#13;

这里的一切都与我想要的完全一致。

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

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

我希望这个问题有意义!

1 个答案:

答案 0 :(得分:3)

  1. 您需要加载几何库

    http://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry

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

  3. 示例:

    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);
    

    distance将是的距离。