У меня есть карта с кучей точек на ней, и я хочу масштабировать так, чтобы все точки были на экране. Код для этого довольно прост:Как увеличить GLatLngBounds (прямоугольник) на 10% в API Google Maps?
var bounds = new GLatLngBounds();
for (var n = 0; n < points.length; n++) {
bounds.extend(points[n].getLatLng());
}
zoomLevel = map.getBoundsZoomLevel(bounds);
Чтобы получить уровень масштабирования, вы должны пройти в объекте bounds. Чтобы создать объект bounds, вы либо даете ему две точки, как прямоугольник, либо передаете ему точку, и она увеличивается в размере (если необходимо), чтобы включить точку, которую я делаю выше.
Проблема в том, что точки отображаются прямо на краю экрана. Я бы хотел увеличить размер границ, скажем, на 10%. Я могу получить две точки из моего объекта bound, используя bounds.getNorthEast();
и bounds.getSouthWest();
, но увеличить их на 10% от размера границ окажется непростым. Я попробовал toSpan()
на границах, который дает вам LatLng, содержащий размер границ, а затем сделал 10% Lat и Lng и добавил его в мои координаты. Однако, похоже, это не сработало. Мой код для этой попытки был:
var pointNorthEast = bounds.getNorthEast();
var pointSouthWest = bounds.getSouthWest();
var latAdjustment = ((pointNorthEast.lat() - pointSouthWest.lat()) * increasePercentage)/2;
var lngAdjustment = ((pointNorthEast.lng() - pointSouthWest.lng()) * increasePercentage)/2;
var newPointNorthEast = new GLatLng(pointNorthEast.lat() + latAdjustment, pointNorthEast.lng() + lngAdjustment);
var newPointSouthWest = new GLatLng(pointSouthWest.lat() - latAdjustment, pointSouthWest.lng() - lngAdjustment);
bounds = new GLatLngBounds();
bounds.extend(newPointNorthEast);
bounds.extend(newPointSouthWest);
По моим расчетам, границы должны быть затем 10% больше. Я не уверен, что он представляет собой прямоугольник или хранит любые данные координат или нет, поэтому я не рискнул, добавив/вычитая половину увеличения с каждой стороны, чтобы поддерживать его в центре.
Однако, пытаясь использовать различные значения увеличения, такие как 1.1 или 1.5, похоже, не имеет значения.
Поэтому я либо поднял свою логику, свою математику, либо тот факт, что zoomLevel не является гладкой шкалой, мешает моим попыткам.
Я думаю, что мне, возможно, нужно было сделать zoomLevel -= 1
и покончить с этим, но я хотел посмотреть, есть ли у кого-нибудь идеи в первую очередь.
любые обновления по этому вопросу? –
Было 3 года назад, я даже не могу вспомнить, что у меня было на ужин вчера вечером ... – NibblyPig
Вот что я подумал, но я спросил на всякий случай: P –