Подтвердить что ты не робот

Google Maps API v3 установил уровень масштабирования для отображения заданного радиуса?

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

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

4b9b3361

Ответ 1

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

Ответ 2

map.setZoom(map.getZoom() + 1);

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

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

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

Ответ 3

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

Map.map.fitBounds(bounds, 0);

Новая сигнатура метода:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number)