我目前正在尝试为我的一个大学项目编写一个简单的网络应用程序原型(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 中,这不是问题。
我希望这个问题有意义!
最佳答案
您需要加载几何库
http://maps.googleapis.com/maps/api/js?key=YOURKEY&libraries=geometry
两点之间的距离是它们之间的最短路径的长度。这条最短路径称为测地线。在球体上,所有测地线都是大圆的线段。要计算此距离,请调用
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/