如何使用latlng中的point1(startPoint)和以米为单位的距离获取point2(destinationPoint)

时间:2014-05-07 08:15:13

标签: javascript google-maps gis

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

如何使用point1和distance获得Point2?

我发现了很多相关的问题而且无法理解他们的扩展讨论。

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

非常感谢。


更新

距离包含2个方向:x和y

偏离中心的X米。

偏离中心的Y米。

在这里,中心是point1。 所以

point1看起来像:-34.127895,140.56842

距离看起来像:3532米,9211米


更新2

enter image description here

我几乎在那里,我找到了计算三角形第三(未知)侧面的公式。 现在我有罪(wantedAngel)=正弦(90)/(X * Y)。 现在我只想知道如何在Javascript中进行un-sin()数学运算。 WantAngel正在承受。

2 个答案:

答案 0 :(得分:1)

你无法通过简单的方式计算出来。由于地球不是平坦的表面,纬度和经度不容易对流量计。

查看this表(这将有助于阅读整篇文章)。你可以看到一度纬度等于111.32 km。向北23度,它只相当于102.47公里,直到达到零到达北极。

看看圆圈越来越小到顶部和底部:

Latitude Rings

我认为它不会比这里提供的方法容易得多: How to calculate the latlng of a point a certain distance away from another?

答案 1 :(得分:0)

所有学分转到@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

<div id="map-canvas"></div>
<div id="info"></div>

CSS

#map-canvas, html, body {
    height: 95%;
    width: 100%;
}

或者你可以看看:

http://jsfiddle.net/A8yZL/1/