API JavaScript Карт использует следующие системы координат:
- Значения широты и долготы, которые однозначно относятся к точке мира. (Google использует стандарт Всемирной геодезической системы WGS84 .)
- Мировые координаты, однозначно ссылающиеся на точку на карте.
- Пиксельные координаты, которые относятся к определенному пикселю на карте при определенном уровне масштабирования.
- Координаты фрагмента, которые относятся к определенному фрагменту на карте при определенном уровне масштабирования.
Мировые координаты
Всякий раз, когда API необходимо преобразовать местоположение в мире в местоположение на карте, он сначала преобразует значения широты и долготы в мировые координаты. API использует проекцию Меркатора для выполнения этого перевода.
Для удобства расчета пиксельных координат (см. ниже) мы предполагаем, что карта при уровне масштабирования 0 представляет собой один тайл базового размера. Затем мы определяем мировые координаты относительно координат пикселей при уровне масштабирования 0, используя проекцию для преобразования широты и долготы в позиции пикселей на этом базовом тайле. Эта мировая координата представляет собой значение с плавающей запятой, измеренное от начала проекции карты до определенного местоположения. Обратите внимание: поскольку это значение является значением с плавающей запятой, оно может быть намного точнее, чем текущее разрешение отображаемого изображения карты. Другими словами, мировая координата не зависит от текущего уровня масштабирования.
Мировые координаты в Картах Google отсчитываются от начала проекции Меркатора (северо-западный угол карты на 180 градусах долготы и примерно 85 градусах широты) и увеличиваются в направлении x к востоку (справа) и увеличиваются в направлении y к югу. (вниз). Поскольку базовый фрагмент Mercator Google Maps имеет размер 256 x 256 пикселей, используемое пространство мировых координат — {0-256}, {0-256} .
![]()
Обратите внимание, что проекция Меркатора имеет конечную ширину по долготе и бесконечную высоту по широте. Мы обрезаем изображение базовой карты с использованием проекции Меркатора примерно под углом +/- 85 градусов, чтобы получить квадра��ную форму карты, что упрощает логику выбора фрагментов. Обратите внимание, что проекция может соз��авать мировые координаты за пределами используемого координатного пространства базовой карты, если, например, вы строите карту очень близко к полюсам.
Координаты пикселей
Пиксельные координаты относятся к определенному пикселю на карте при определенном уровне масштабирования, тогда как мировые координаты отражают абсолютные местоположения в данной проекции. Координаты пикселей рассчитываются по следующей формуле:
pixelCoordinate = worldCoordinate * 2zoomLevel
Из приведенного выше уравнения обратите внимание, что каждый увеличивающийся уровень масштабирования в два раза больше как в направлениях x , так и в направлениях y . Таким образом, каждый более высокий уровень масштабирования приводит к разрешению в четыре раза выше, чем предыдущий уровень. Например, при уровне масштабирования 1 карта состоит из 4 фрагментов размером 256x256 пикселей, в результате чего получается пространство в пикселях размером 512x512. На уровне масштабирования 19 на каждый пиксель x и y на карте можно ссылаться, используя значение от 0 до 256 * 2 19 .
Поскольку мы основывали мировые координаты на размере фрагмента карты, целочисленная часть координаты пикселя позволяет идентифицировать точный пиксель в этом месте на текущем уровне масштабирования. Обратите внимание, что для уровня масштабирования 0 координаты пикселей равны мировым координатам.
Теперь у нас есть способ точно обозначить каждое местоположение на карте при каждом уровне масштабирования. API JavaScript Карт создает область просмотра, учитывая уровень масштабирования центра карты (как LatLng ) и размер содержащего его элемента DOM, и преобразует эту ограничивающую рамку в пиксельные координаты. Затем API логически определяет все фрагменты карты, находящиеся в пределах заданных пикселей. Каждый из этих фрагментов карты привязан к координатам фрагмента , что значительно упрощает отображение изображений карты.
Координаты плитки
API не может загрузить все изображения карты одновременно для более высоких уровней масштабирования. Вместо этого API разб��вает изображения на каждом уровне масштабирования на набор фрагментов карты, которые логически расположены в порядке, понятном приложению. Когда карта прокручивается до нового местоположения или до нового уровня масштабирования, API определяет, какие фрагменты необходимы, используя пиксельные координаты, и преобразует эти значения в набор фрагментов для извлечения. Эти координаты тайлов назначаются с использованием схемы, которая позволяет логически легко определить, какой тайл содержит изображения для любой заданной точки.
Плитки в Картах Google нумеруются из того же источника, что и пиксели. В реализации Google проекции Меркатора исходная плитка всегда находится в северо-западном углу карты, при этом значения x увеличиваются с запада на восток, а значения y увеличиваются с севера на юг. Плитки индексируются с использованием координат x,y от этого источника. Например, при уровне масштабирования 2, когда земля разделена на 16 плиток, на каждую плитку можно ссылаться по уникальной паре x,y :

Обратите внимание: разделив пиксельные координаты на размер плитки (256) и взяв целые части результата, вы получите в качестве побочного продукта координату плитки при текущем уровне масштабирования.
Пример
В следующем примере отображаются координаты Чикаго, штат Иллинойс: значения широты и долготы, мировые координаты, координаты в пикселях и координаты плитки. Используйте элемент управления масштабированием, чтобы увидеть значения координат на различных уровнях масштабирования.
Чтобы увидеть, как были рассчитаны координаты, просмотрите код .