谷歌地图 V3 中的圆形与我创建的圆形不匹配

7
我使用Google Maps V3 API创建了一个圆形,并尝试使用相同的半径创建一个标记圆。但是存在问题:我创建的圆形是倾斜的,而Google Maps创建的是一个漂亮的圆形。出了什么问题呢?
以下是Google Maps V3 Circle代码:
// Draw search circle
search_circle = new google.maps.Circle;
search_circle.setCenter(target_latlng);
search_circle.setRadius(travel_time * average_speed);
search_circle.setMap(map);

enter image description here

2个回答

4

在此需要记住一件事情,谷歌圆是在球面上(地球)两点之间给出距离,这就是为什么你的圆看起来不同的原因。

您没有说明示例中圆的用途,但从代码片段中可以看出它与旅行距离有关。在这种情况下,您可能会对以下内容感兴趣:

哈弗赛因公式

或者

余弦定理(球面三角形)

此外,此页面可以为您提供一些基础知识,以调整您的公式以获得正确的圆形状。

编辑:为了准确起见,地球不是一个完美的球体,但在所有实际目的中都被认为是一个球体。


2
为了计算球体上的距离,您可以使用Google地图的几何库。要请求该库,请使用以下代码:

几何库

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=true_or_false"></script>

那么,你的Circle JS代码将是:

num_theta_step = 365;               // number of steps
for(theta = 0; theta < 365; theta += 365/num_theta_step) {                        
   var circle_latlng = google.maps.geometry.spherical.computeOffset(target_latlng, R, theta);
   var marker = new google.maps.Marker({
      position: circle_latlng,
      map: map,
      title:"Hello World!"
   });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接