gpt4 book ai didi

google-maps - 如果我知道 GPS 的中心位置和左上角位置,如何获得矩形的纬度和经度?

转载 作者:行者123 更新时间:2023-12-04 23:41:42 26 4
gpt4 key购买 nike

背景:

我正在尝试使用 Google map ground overlay但我们缺少 GPS 位置。

我们有一张要覆盖的 map ,它是在谷歌地图屏幕截图上绘制的。从这个屏幕截图中,我们记录了左上角和中心中心位置。

我们需要右下角的位置来准确地叠加这些图像。见下文:

Top Left positions and center positions GPS known

最初的想法是找到两点之间的差异并将其添加到中心点。

尝试的逻辑:

在 JavaScript 中:

var topLeft      = [-32.8830055, 151.686214];
var centerCenter = [-32.9293803, 151.756686];

var difference1 = centerCenter[0] - ( (topLeft[0] - centerCenter[0] ) ) ;
var difference2 = centerCenter[1] - ( (topLeft[1] - centerCenter[1] ) ) ;

// being bottom right this should be "bigger" than above values
// outputs [-32.97575509999999, 151.827158];
var bottomRight = [difference1 , difference2];

问题:

然而,这似乎是地球曲线将简单的数学抛出门外的地方。我猜下面发生的事情就是原因。

The image overlay is flat while the GPS system is curved.

所以给定我有一个矩形覆盖,我知道左上点和中心点 我能算出右下角的经纬度吗即上图中的 X。注意我不知道这个矩形的真实世界距离。

注意:我也知道我必须将这些更改为 NW/SE 才能使用地面覆盖。

最佳答案

方法(使用几何库):

  • 计算从西北到中心的航向
    google.maps.geometry.spherical.computeHeading(northwest, center);
  • 计算从西北到中心的距离
    google.maps.geometry.spherical.computeDistanceBetween(northwest, center);
  • 通过使用计算东南
    google.maps.geometry.spherical.computeOffset(center,
    calculatedDistance,
    calculatedHeading);


  • function initialize() {

    var nw = new google.maps.LatLng(62.400471, -150.287132),
    center = new google.maps.LatLng(62.341145, -150.14637),
    map = new google.maps.Map(document.getElementById('map_canvas'), {
    zoom: 9,
    center: center
    }),
    heading, distance, se;

    heading = google.maps.geometry.spherical.computeHeading(nw, center);
    distance = google.maps.geometry.spherical.computeDistanceBetween(nw, center);
    se = google.maps.geometry.spherical.computeOffset(center, distance, heading);

    new google.maps.Marker({
    map: map,
    position: center
    });
    new google.maps.Marker({
    map: map,
    position: nw
    });
    new google.maps.Marker({
    map: map,
    position: se
    });

    new google.maps.GroundOverlay(
    'https://developers.google.com/maps/documentation/' +
    'javascript/examples/full/images/talkeetna.png', {
    north: nw.lat(),
    south: se.lat(),
    west: nw.lng(),
    east: se.lng()
    }, {
    map: map
    });


    }

    google.maps.event.addDomListener(window, 'load', initialize);
    html,
    body,
    #map_canvas {
    height: 100%;
    margin: 0;
    padding: 0;
    }
    <div id="map_canvas"></div>
    <script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=geometry"></script>

    关于google-maps - 如果我知道 GPS 的中心位置和左上角位置,如何获得矩形的纬度和经度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713997/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com