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

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

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

我创建了一个 map ,在用户当前位置放置一个标记,并在固定点放置一个标记。这是到目前为止的 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 中,这不是问题。

我希望这个问题有意义!

最佳答案

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

距离将以为单位的距离。

关于javascript - 使用computeDistanceBetween计算用户当前位置和固定点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957593/

相关文章:

JavaScript 日期 + 1

javascript - 在类函数中访问 `this` 未定义

android - 在 Google map 中测量步行距离

android - 如何在 Android 中从经纬度或 Google map 获取海拔高度?

javascript - 来自 geoJSON 的 Google map 航点

javascript - window.performance javascript 的解释

javascript - 使 JQuery 按钮显示为已按下;即改变主题

javascript - 带有 MarkerClustererer 的 Google map v3 无法与 createmarker 一起使用

javascript - 尝试使用 google api v3 从地址获取位置

ios - 使用 iOS 和 Swift 的谷歌地图中的一些标记不会消失