Как рассчитать уровень масштабирования карт Google для ограничивающего прямоугольника в Java - PullRequest
2 голосов
/ 24 ноября 2010

Мне нужно получить уровень масштабирования карт Google для ограничительной рамки на стороне сервера (которая закодирована в Java). Есть идеи?

Ответы [ 2 ]

6 голосов
/ 21 мая 2013

@ Питер На самом деле есть кое-что, что вы можете сделать на стороне сервера, используя Java.Вы можете рассчитать минимальные и максимальные значения широты / долготы из ограничительной рамки, а затем использовать следующий код:

int zoomLevel;
double latDiff = latMax - latMin;
double lngDiff = lngMax - lngMin;

double maxDiff = (lngDiff > latDiff) ? lngDiff : latDiff;
if (maxDiff < 360 / Math.pow(2, 20)) {
    zoomLevel = 21;
} else {
    zoomLevel = (int) (-1*( (Math.log(maxDiff)/Math.log(2)) - (Math.log(360)/Math.log(2))));
    if (zoomLevel < 1)
        zoomLevel = 1;
}

Это хорошо сработало для моей квадратной карты Google размером 320x320 пикселей с ZOOM_SCALING_FACTOR = 0,3838.Эта формула должна работать правильно для ЛЮБОЙ квадратной карты Google.Причина, по которой вы видите использование log_2, заключается в том, что карта Google удваивается в размере каждый раз, когда уровень масштабирования увеличивается на 1. Я также занимаюсь крайними случаями, когда точки почти совпадают друг с другом (zoomLevel = 21), и где весь глобусэто желаемое увеличение (zoomLevel = 1).

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

1 голос
/ 24 ноября 2010

Google maps используется через библиотеку javascript, которая работает на стороне клиента (внутри браузера).На стороне сервера вы ничего не можете сделать.

Однако вы можете посмотреть на размер ограничительной рамки в javascript (на стороне клиента) и соответственно установить уровень масштабирования.

Мне интересно: что вы делаете с картами Google на сервере?сторона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...