javascript - Google Maps V3 Circle & Circle that I created do not match - Stack Overflow

I created a circle using the Google Maps V3 API and also tried to make a circle of markers with the sam

I created a circle using the Google Maps V3 API and also tried to make a circle of markers with the same radius.

Problem: The one I created is oblique while the one by Google Maps is a nice round circle. What went wrong?

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);

I created a circle using the Google Maps V3 API and also tried to make a circle of markers with the same radius.

Problem: The one I created is oblique while the one by Google Maps is a nice round circle. What went wrong?

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);

Share Improve this question edited Nov 10, 2011 at 0:49 Nyxynyx asked Nov 9, 2011 at 12:19 NyxynyxNyxynyx 63.9k163 gold badges507 silver badges856 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 4

One thing you need to remember here, the google circle is giving the distance between two points on a sphere (the earth) which is why your circle doesn't look the same.

You did not specify what the purpose of the circle in your example is, but from the code snippet I can tell it has something to do with travel distances. In that case you might be interested to look into :

The Haversine Formula

or

The Spherical Law of Cosines

Also this page could provide you with some basis on how to tweak your formula to get the correct circle shape.

Edit: For the sake of correctness, the earth is not a perfect sphere, but for all practical purposes it is assumed to be one.

To calculate distances on a sphere, you can utilize Google Maps geometry library. To request the library use:

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

Then, your circle JS code would be:

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

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745547697a4632416.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信