我目前正在尝试为我的一个大学项目编写一个简单的网络应用原型。我对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;
这里的一切都与我想要的完全一致。
我不确定如何使用computeDistanceBetween返回用户初始位置(initialLocation)与标记位置之间的距离。
标记信息存储在XML文件中,因为最初我计划添加多个。但我的网站只有需要一个标记,所以如果我必须将固定标记的信息写入Javascript,这不是问题。
我希望这个问题有意义!
答案 0 :(得分:3)
您需要加载几何库
http://maps.googleapis.com/maps/api/js?sensor=false&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);
distance
将是米的距离。