Google Maps V3 Circle&我创建的圆圈不匹配

时间:2011-11-09 12:19:25

标签: javascript jquery google-maps google-maps-api-3 gis

我使用Google Maps V3 API创建了一个圆圈,并尝试制作一个半径相同的标记圈。

问题:我创建的那个是斜的,而谷歌地图的那个是一个很好的圆圈。出了什么问题?

Google Maps V3 Circle Code

// 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 个答案:

答案 0 :(得分:4)

你需要记住的一件事是,谷圈给出了球体(地球)上两点之间的距离,这就是为什么你的圆圈看起来不一样的原因。

您没有在示例中指定圆圈的用途,但是从代码段我可以看出它与旅行距离有关。在这种情况下,您可能有兴趣研究:

The Haversine Formula

The Spherical Law of Cosines

同样this page可以为您提供一些如何调整公式以获得正确圆形的基础。

编辑:为了正确起见,地球不是一个完美的球体,但是出于所有实际目的,它被认为是一个。

答案 1 :(得分:2)

要计算球体上的距离,您可以使用Google地图geometry library。 要请求图书馆使用:

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

然后,您的圈子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!"
   });
}