Мне нужно получить уровень масштабирования google-карт для ограничивающей рамки на стороне сервера (которая закодирована в java) любые идеи?как рассчитать уровень масштабирования google-карт для ограничивающей рамки в java
ответ
Карты Google используются через библиотеку javascript, которая работает на стороне клиента (внутри браузера). На стороне сервера вы ничего не можете сделать.
Однако вы можете посмотреть размер рамки в javascript (на стороне клиента) и соответственно установить уровень масштабирования.
Мне любопытно: что вы делаете с картами google на стороне сервера?
@Peter На самом деле есть что-то, что вы можете сделать на стороне сервера, используя 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 карте 320х320 пикселей, с ZOOM_SCALING_FACTOR = 0.3838. Эта формула должна корректно работать для ЛЮБОЙ квадратной карты Google. Причина, по которой вы используете log_2, заключается в том, что карта Google удваивается по размеру каждый раз, когда уровень масштабирования увеличивается на 1. Я также обрабатываю граничные случаи, когда точки почти совпадают друг с другом (zoomLevel = 21) и где весь земной шар - желаемое масштабирование (zoomLevel = 1).
Приятная вещь, связанная с этой серверной стороной, заключается в том, что вы освободили свой движок JavaScript от выполнения сложной (и потенциально расточительной) математики, которая может замедлить загрузку страницы и ухудшить работу пользователя.
Спасибо вам хорошо. – Blamkin86 2015-12-08 22:13:38
Но как вы это сделаете? – elvenbyte 2011-06-21 15:11:32