【问题标题】:Using computeDistanceBetween to work out the distance between the user's current location and a fixed point使用 computeDistanceBetween 计算出用户当前位置与固定点之间的距离
【发布时间】:2015-01-13 11:22:12
【问题描述】:

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

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

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

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

我希望这个问题有意义!

【问题讨论】:

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


【解决方案1】:
  1. 需要加载几何库

    http://maps.googleapis.com/maps/api/js?key=YOURKEY&amp;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);

distance 将以为单位的距离。

【讨论】:

    猜你喜欢
    • 2011-12-01
    • 2012-10-05
    • 2022-06-23
    • 2018-12-10
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多