Javascript 如何使用latlng中的point1(起点)和距离(米)获取point2(终点)
我有一个latlng格式的point1和一个米格式的距离。现在我的问题是 如何使用点1和距离获得点2 我发现了许多相关的问题,只是无法理解他们的广泛讨论 我只需要简单的javascript公式或代码来演示如何进行计算 多谢各位Javascript 如何使用latlng中的point1(起点)和距离(米)获取point2(终点),javascript,google-maps,gis,Javascript,Google Maps,Gis,我有一个latlng格式的point1和一个米格式的距离。现在我的问题是 如何使用点1和距离获得点2 我发现了许多相关的问题,只是无法理解他们的广泛讨论 我只需要简单的javascript公式或代码来演示如何进行计算 多谢各位 更新: 该距离包含两个方向:x和y X米偏离中心 Y米从中心偏移 在这里,中心是点1。 所以 第1点看起来像:-34.127895140.56842 距离看起来是:3532米,9211米 更新2 我快到了,我找到了计算三角形第三面(未知)的公式。 现在我有sin(w
更新: 该距离包含两个方向:x和y X米偏离中心 Y米从中心偏移 在这里,中心是点1。 所以 第1点看起来像:-34.127895140.56842 距离看起来是:3532米,9211米
更新2
我快到了,我找到了计算三角形第三面(未知)的公式。 现在我有sin(wantedAngel)=sine(90)/(X*Y)。
现在我只想知道如何在Javascript中执行un-sin()数学运算。wantedAngel正在运行。您将无法用简单的方法计算它。由于地球不是一个平坦的表面,纬度和经度不容易换算到米 看一看表格(这将有助于阅读整篇文章)。你可以看到一个纬度等于111.32公里。往北纬23度,它只相当于102.47公里,直到零度到达北极 看看从上到下逐渐变小的圆圈: 我认为这不会比这里提供的方法简单得多:
所有学分都归@geocodezip:) JavaScript:
function initialize() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(-34.127895, 140.56842),
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var bounds = new google.maps.LatLngBounds();
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
position: map.getCenter(),
map: map
});
bounds.extend(map.getCenter());
var south = google.maps.geometry.spherical.computeOffset(marker.getPosition(),3532,180);
var line1 = new google.maps.Polyline({
map:map,
path: [marker.getPosition(),south],
strokeWeight: 2,
strokeColor: "#ff0000"
});
bounds.extend(south);
var destination = google.maps.geometry.spherical.computeOffset(south,9211,90);
bounds.extend(destination);
var line2 = new google.maps.Polyline({
map:map,
path: [south, destination],
strokeWeight: 2,
strokeColor: "#ff0000"
});
var destMarker = new google.maps.Marker({
position: destination,
map:map
});
map.fitBounds(bounds);
document.getElementById('info').innerHTML = "distance is "+(google.maps.geometry.spherical.computeDistanceBetween(marker.getPosition(), destination)/1000.0).toFixed(2)+" km";
var line3 = new google.maps.Polyline({
map:map,
path: [marker.getPosition(), destMarker.getPosition()],
strokeWeight: 2,
strokeColor: "#0000FF"
});
}
google.maps.event.addDomListener(window, 'load', initialize);
Html
或者你可以看看:
如果您不知道方向,您就不能。hi@Paulito请查看我的更新,谢谢。hi@ChristianVarga我已经更新了我的问题,谢谢。@Franva这是因为也接受弧度作为参数。这将给你90:
Math.asin(Math.sin(Math.PI*90/180))*(180/Math.PI)
Hi loafer,谢谢你的回复。这很接近我的问题,但只有一件事是不同的:我没有轴承。我只有一个包含X和Y的点格式的距离(X米到中心的偏移量,Y米到中心的偏移量)。@Franva根据你的值,你可以计算方位。你们的X和Y信息可以被看作是两条线,它们形成了一个具有实际距离的三角形。X和Y以90度对齐。现在给定两条边和90度,你可以计算三角形的所有其他值,并使用链接中提供的解决方案。你是对的:)但是我已经把几乎所有的数学知识还给了我的老师……你能写几行代码来告诉我如何计算轴承吗?多亏了一个洛蒂,我找到了计算公式。现在我有sin(wantedAngel)=sine(90)/(X*Y)。现在我只想知道如何在Javascript中执行un-sin()数学运算。wantedAngel正在承载。到目前为止,您能提供您的代码吗?最好是一个JSFIDLE。
<div id="map-canvas"></div>
<div id="info"></div>
#map-canvas, html, body {
height: 95%;
width: 100%;
}