2011-11-09 71 views
7

我使用Google Maps V3 API创建了一个圈子,并尝试制作具有相同半径的标记圈。我创建的Google地图V3圈子和圈子不匹配

问题:我创建的那个是倾斜的,而Google Maps的那个是一个很好的圆圈。什么地方出了错?

谷歌地图V3圈代码

// 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

回答

4

有一件事你必须要记住,谷歌的圆给人两点之间的距离在球体上(地球),这是为什么你的圈子看起来不一样。

你没有具体说明你的例子中圆的用途是什么,但是从代码段我可以告诉它与旅行距离有关。在这种情况下,你可能有兴趣看看:

The Haversine Formula

The Spherical Law of Cosines

而且this page可以提供关于如何调整你的公式一定的基础,以获得正确的圆形。

编辑:为了正确,地球不是一个完美的球体,但是对于所有的实际目的来说,它被假定为一个。

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!" 
    }); 
}