Я разрабатываю веб-сервис на PHP
который получает широту, долготу и радиус в километрах и генерирует статическую карту google .
Также я показываю все точки из моей базы данных в этом радиусе.
Мой вопрос заключается в том, как я могу скрывать свой radius
в параметре zoom
Google, чтобы убедиться, что все точки видны на карте?
что-то вроде: http://maps.googleapis.com/maps/api/staticmap?center=New+York,NY&[*THIS PARAMETER*zoom=13]&size=600x300&markers.......
Как указано в Документах Google Maps :
Потому что основная плитка Google Maps от Mercator составляет 256 x 256 пикселей.
Также обратите внимание, что каждый уровень масштабирования, карта имеет 2 п плитки.
Это означает, что в zoomLevel 2 пиксели в любом направлении карты = 256 * 2² = 1024px.
Принимая во внимание, что земля имеет периметр ~ 40 000 километров, при масштабировании 0 каждый пиксель ~ = 40 000 км / 256 = 156,25 км
При масштабировании 9 пикселы составляют 131072:
1px = 40 000 км / 131072 = 0,305 км … и так далее.
Если ваше изображение 640 x 640 px, и вы используете зум 9, это означает, что вы будете покрывать ~ 640 * 0.305 ~ = 195 км. Таким образом, ваш радиус составляет около 100 км.
Каждый раз, когда вы увеличиваете ++, радиус равен половине.
Если вы используете масштаб 15 (1px = 0.00478km), ваше изображение будет охватывать ~ 3 км в ширину (радиус 1,5 км).
Учтите, что по мере продвижения дальше на север или на юг реальное расстояние меньше, так как искажение больше.
Вы можете использовать в качестве параметра что-то вроде zoom = Floor (log 2 (EarthP * 2 PixMap / (радиус 256 *))).
примечание: для преобразования журнала 2 в обычный журнал просто выполните следующее:
Этаж ((журнал (EarthP * 2 PixMap / (радиус 256 *))) / журнал 2)
Ссылка на логарифмы в Википедии
Посмотрите на LatLngBounds и метод map.fitBounds … Google maps api