Google maps 使用Google Maps API v3查找三个点之间的大圆距离
不幸的是,我找不到如何在谷歌地图上的三(3)个点之间绘制大圆距离的代码/示例* 下面是两个要点的javascript。我怎样才能让这三点起作用Google maps 使用Google Maps API v3查找三个点之间的大圆距离,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,不幸的是,我找不到如何在谷歌地图上的三(3)个点之间绘制大圆距离的代码/示例* 下面是两个要点的javascript。我怎样才能让这三点起作用 var geocoder; var map; var addresses; var results; var dist; function initialize() { geocoder = new google.maps.Geocoder(); address1 = document.getElementById("distancef
var geocoder;
var map;
var addresses;
var results;
var dist;
function initialize() {
geocoder = new google.maps.Geocoder();
address1 = document.getElementById("distancefrom").value;
address2 = document.getElementById("distanceto").value;
(distance(address1, address2));
}
function distance(add1, add2) {
if (!geocoder)
return 'Error, no geocoder';
addresses = new Array(2);
addresses[0] = add1;
addresses[1] = add2;
results = new Array(2);
results[0] = new Array(2);
results[1] = new Array(2);
results[0][0] = 0; results[0][1] = 0; results[1][0] = 0; results[1][1] = 0.87;
geocoded(1);
}
function geocoded(i) {
geocoder.geocode( { 'address': addresses[i] }, function(res, status) {
if (status == google.maps.GeocoderStatus.OK) {
results[i][0] = parseFloat(res[0].geometry.location.lat());
results[i][1] = parseFloat(res[0].geometry.location.lng());
i--;
if (i >= 0)
geocoded(i);
else {
var latlng1 = new google.maps.LatLng(results[0][0], results[0][1]);
var latlng2 = new google.maps.LatLng(results[1][0], results[1][1]);
dist = google.maps.geometry.spherical.computeDistanceBetween(latlng1, latlng2)/1000;
var dmi = 0.539957*dist;
document.getElementById('totaldistancemiles').value = dmi.toFixed(2);
document.getElementById('totaldistancekm').value = dist.toFixed(2);
showMap(latlng1,latlng2);
}
}
});
}
function showMap(location1,location2) {
latlng = new google.maps.LatLng((location1.lat()+location2.lat())/2,
(location1.lng()+location2.lng())/2);
faddress1 = document.getElementById("distancefrom").value;
faddress2 = document.getElementById("distanceto").value;
var mapOptions =
{
zoom: 1,
center: latlng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
map = new google.maps.Map(document.getElementById("map"), mapOptions);
var flightPlanCoordinates = [
location1,
location2
];
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#FF0000",
strokeOpacity: .5,
geodesic: true,
strokeWeight: 3
});
flightPath.setMap(map);
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#000000",
strokeOpacity: .5,
strokeWeight: 0
});
flightPath.setMap(map);
var igreen= 'https://dl.dropboxusercontent.com/u/85343999/igreen.gif';
var marker = new google.maps.Marker({
map: map,
icon: igreen,
position: location1
});
var latlngbounds;
latlngbounds = new google.maps.LatLngBounds();
latlngbounds.extend( location1);
latlngbounds.extend( location2);
map.fitBounds(latlngbounds);
var infowindow = new google.maps.InfoWindow();
infowindow.setContent(faddress1);
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
var marker2 = new google.maps.Marker({
map: map,
icon: igreen,
position: location2
});
var infowindow2 = new google.maps.InfoWindow();
infowindow2.setContent(faddress2);
google.maps.event.addListener(marker2, 'click', function() {
infowindow2.open(map, marker2);
});
}
以下代码使用谷歌库计算点之间的距离。在本例中,位置存储在数组中,但可以从文本框等获取。距离以米为单位
<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script>
<script type="text/javascript">
var coords = [
[35.733972, -5.881999],
[35.734077, -5.881033],
[35.736898, -5.877771],
];
function calcDistance() {
var first = new google.maps.LatLng(coords[0][0],coords[0][1]);
var second = new google.maps.LatLng(coords[1][0],coords[1][1]);
var third = new google.maps.LatLng(coords[2][0],coords[2][1]);
var distance1 = google.maps.geometry.spherical.computeDistanceBetween(first, second);
var distance2 = google.maps.geometry.spherical.computeDistanceBetween(first, third);
var distance3 = google.maps.geometry.spherical.computeDistanceBetween(second, third);
showDistance(distance1,distance2,distance3);
}
function showDistance(distance1,distance2,distance3) {
document.write("Distance1 "+distance1 + " metres <br>");
document.write("Distance2 "+distance2 + " metres <br>");
document.write("Distance3 "+distance3 + " metres <br>");
}
变量坐标=[
[35.733972, -5.881999],
[35.734077, -5.881033],
[35.736898, -5.877771],
];
函数calcDistance(){
var first=new google.maps.LatLng(coords[0][0],coords[0][1]);
var second=new google.maps.LatLng(coords[1][0],coords[1][1]);
var third=new google.maps.LatLng(coords[2][0],coords[2][1]);
var distance1=google.maps.geometry.spheremic.ComputedDistanceBeween(第一,第二);
var distance2=google.maps.geometry.spheremic.ComputedDistanceBeween(第一,第三);
var distance3=google.maps.geometry.spheremic.ComputedDistanceBeween(第二,第三);
显示距离(距离1、距离2、距离3);
}
函数showDistance(距离1、距离2、距离3){
记录。写下(“距离1”+距离1+”米
”;
记录。写下(“距离2”+距离2+”米
”;
记录。写下(“距离3”+距离3+”米
”;
}
你没有提供javascript,无论如何,据我所知,大圆距离,如果你想计算三个点之间的距离,应该是两个点之间距离的串联,那么问题出在哪里?亲爱的DavidNow,我理解得更好,但我无法提供我的代码,因为无法以javascript格式发送,…你能告诉我如何处理我的代码(简短的一个)我如何把它发送给你进行点评吗?大卫,我在同一个问题下设法发送了一些修改过的代码,…你想要和HTML吗?大卫,…很抱歉打扰你,…如果你决定帮我,你可以忘记代码中的一些部分来计算和显示大圆上的距离,…我只需要在谷歌地图上显示,…3个点之间的扇区(GCD)…在所有组合中:A点、B点、C点,…在谷歌地图上需要GCD扇区,带有标记:A-B-C、A-C、B-C!!提前谢谢,如果你没有空余时间来帮助我,请不要硬填充!