Google Maps API v3 установить уровень масштабирования, чтобы показать заданный радиус? - PullRequest
23 голосов
/ 02 марта 2011

Я создал карту, на которой пользователь вводит почтовый индекс и радиус (мили), и я хочу, чтобы карта центрировалась на точке, созданной из почтового индекса, и отображала только (приблизительно) область, которая будет в пределах этого радиуса. Я создаю Круг с радиусом и пытаюсь заставить карту соответствовать этому кругу. Сейчас он центрируется правильно, но отображаемая область намного больше указанного радиуса.

me.center_map = function(latlng, r)
{
    // latlng is the point of the zipcode
    var circ = new google.maps.Circle();
    circ.setRadius(r * 1609.0);
    circ.setCenter(latlng);
    map.setCenter(latlng);
    map.fitBounds(circ.getBounds());

    // updates markers
    google.maps.event.trigger(map,'dragend');
};

РЕДАКТИРОВАТЬ: Нарисуйте круг, который я использую. В идеале карта должна быть увеличена до области в радиусе.

enter image description here

Ответы [ 3 ]

21 голосов
/ 02 марта 2011

При вызове fitBounds () масштабируется до наименьшего уровня масштабирования, который полностью содержит границы.Если бы вы увеличили еще 1 уровень масштабирования, радиус не был бы полностью заключен в карту.

4 голосов
/ 17 марта 2011
map.setZoom(map.getZoom() + 1);

Это, конечно, зависит от того, насколько хорошо подходит конкретный радиус (в случае, если он не всегда один и тот же)

Чтобы отобразить область внутри круга, необходимо построить прямоугольник с угламипериметр круга и подгонка области просмотра карты к его границам.

Например, рисование видимого круга и прозрачного прямоугольника с той же центральной точкой должно работать, как описано в op.

0 голосов
/ 30 ноября 2017

С июня 2017 года метод fitBounds имеет второй параметр, который представляет размер отступа.Для тех, кто хочет удалить его, вам просто нужно передать 0.

Map.map.fitBounds(bounds, 0);

Новая подпись метода:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...