Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用latlng中的point1(起点)和距离(米)获取point2(终点)_Javascript_Google Maps_Gis - Fatal编程技术网

Javascript 如何使用latlng中的point1(起点)和距离(米)获取point2(终点)

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

我有一个latlng格式的point1和一个米格式的距离。现在我的问题是

如何使用点1和距离获得点2

我发现了许多相关的问题,只是无法理解他们的广泛讨论

我只需要简单的javascript公式或代码来演示如何进行计算

多谢各位


更新:

该距离包含两个方向: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%;
}