Проверьте демо под:
http://jsbin.com/otidih/51 для еще нескольких экспериментов на этом.
Чтобы получить ведение журнала, запустите консоль - там записано большинство вещей.
Подробное объяснение из этого сообщения группы.
Более короткая версия ниже:
ContainerPixel рассчитывается относительно контейнера вашей карты. Если вы перемещаете карту, то изменяется ContainerPixel из LatLngs .
ContainerPixel вещей, которые не перемещаются с картой (float), не изменяется.
Например, ContainerPixel mapCenter остается неизменным, если вы не изменили размер карты:
overlay.getProjection().fromLatLngToContainerPixel(map.getCenter())
DivPixel рассчитывается относительно огромного Div, который содержит все пространство тайлов для мира с текущим уровнем масштабирования.
overlay.getProjection().fromLatLngToDivPixel(point)
Если вы не измените уровень масштабирования и не переместите (переместите) карту, то DivPixel всего, что движется с картой, останется прежним. Например, DivPixel данного города на карте останется прежним, даже если вы переместите карту. Он изменится только при изменении уровня масштабирования или пересечении международной линии даты.
Обратите внимание, что реальная контрольная точка, используемая для расчета DivPixel, сбрасывается
всякий раз, когда карта масштабируется, поэтому один и тот же LatLng может иметь разные значения DivPixel, даже если вы вернетесь к тому же уровню масштабирования.
Также следует учитывать значение Point , возвращаемое из
map.getProjection().fromLatLngToPoint()
, что хорошо объяснено в Справочнике по API
Он переводится из цилиндра LatLng в плоскость большой точки, которая всегда остается неизменной (независимо от уровня масштабирования). Данные LatLngs всегда будут отображаться в одну и ту же точку.
Точкой (0,0) является (85.0511287798066, -180) LatLng - где срезы Google Map (если вы хотите узнать почему, читайте о проекции Меркатора )