#javascript #jquery #google-maps #google-maps-api-3 #gis
#javascript #jquery #google-карты #google-maps-api-3 #гис
Вопрос:
Я создал круг, используя API Google Maps V3, а также попытался создать круг из маркеров с тем же радиусом.
Проблема: тот, который я создал, является наклонным, в то время как тот, который создан Google Maps, представляет собой красивый круглый круг. Что пошло не так?
Код круга 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);
Ответ №1:
Здесь вам нужно помнить одну вещь: круг Google показывает расстояние между двумя точками на сфере (земле), поэтому ваш круг не выглядит одинаково.
Вы не указали, какова цель круга в вашем примере, но из фрагмента кода я могу сказать, что это как-то связано с расстояниями в пути. В этом случае вам может быть интересно изучить :
или
Также эта страница могла бы предоставить вам некоторую информацию о том, как настроить вашу формулу, чтобы получить правильную форму круга.
Редактировать: Для корректности Земля не является идеальной сферой, но для всех практических целей предполагается, что это так.
Ответ №2:
Для вычисления расстояний на сфере вы можете использовать геометрическую библиотеку Google Maps. Чтобы запросить библиотеку, используйте:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometryamp;sensor=true_or_false"></script>
Тогда ваш JS-код circle был бы:
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!"
});
}