1

我很难弄清楚如何用 20 米乘 20 米的矩形来包裹纬度/经度点。

用例:

> Click on a marker on the Google map
< Infowindow opens
> Click a button called 'Wrap' on the Infowindow
< Automatically create a 20x20m box with the marker dead center

我在地图上创建矩形(而不是正方形)没有问题我只需要知道如何计算 Lat/Lng 中正方形的边界。

在普通网格上,我将通过以下方式获得 NW 和 SE 点:

marker_nw_y = marker_y + 10 (meters)
marker_nw_x = marker_x - 10
marker_se_y = marker_y - 10
marker_se_x = marker_x + 10

从那里我可以创建图形正方形等。但是使用 Lat/Lng 会变得更加复杂,因为改变两点之间的度数会因您所在的位置而异。

我怎么能这样做?操纵Haversine公式?我需要重新排列并解决其中一个坐标,而不是求解“距离”,但重新排列该公式很困难,我不确定我的结果是否正确。

4

2 回答 2

1

我相信这个问题包含的代码应该可以让你完成你正在寻找的东西。

于 2012-11-08T16:33:30.187 回答
0

我会使用我移植到 Google Maps API v3 的 Mike Williams 的 eshapes 库来制作“半径”为 20*sqrt(2)/2 米的正方形。

使用我的Mike Williams 的 eshapes 库端口的示例

点击监听器将是:

google.maps.event.addListener(map, "click", function(evt) {
  var marker = new google.maps.Marker({ position: evt.latLng, map: map});
  var square = google.maps.Polyline.RegularPoly(evt.latLng,20*Math.sqrt(2)/2,4,0,"#ff0000",1,1);
  square.setMap(map);
});

工作示例

基于 Kelvin Mackay 链接中的替代答案的更简单的工作示例

于 2012-11-08T17:31:28.287 回答