Google Maps V3 Circle & Circle, которые я создал, не совпадают - PullRequest
7 голосов
/ 09 ноября 2011

Я создал круг, используя Google Maps V3 API, а также попытался сделать круг маркеров с таким же радиусом.

Проблема: Тот, который я создал, наклонен, в то время как тот, что в Google Maps, - это хороший круглый круг.Что пошло не так?

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 ]

4 голосов
/ 09 ноября 2011

Одна вещь, которую вы должны помнить здесь, гугл-круг дает расстояние между двумя точками на сфере (земле), поэтому ваш круг не выглядит одинаково.

Вы не указали, какова цель круга в вашем примере, но из фрагмента кода я могу сказать, что он как-то связан с расстояниями перемещения.В этом случае вам может быть интересно посмотреть:

Формула Хаверсина

или

Сферический закон косинусов

Также эта страница может дать вам некоторую основу о том, как настроить формулу, чтобы получить правильную форму круга.

Редактировать: Дляради правильности, земля не является идеальной сферой, но для всех практических целей предполагается, что она одна.

2 голосов
/ 09 ноября 2011

Для расчета расстояний на сфере вы можете использовать Google Maps Геометрическая библиотека .Чтобы запросить библиотеку, используйте:

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