2011-11-09 117 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!" 
    }); 
}