OpenLayers: почему мои маркеры векторных функций смещены? - PullRequest
2 голосов
/ 10 июля 2011

Сначала я закодировал с помощью маркеров (с успехом), а потом понял, что больше не рекомендуется (особенно для кластеризации).

Прочитав примеры, приведенные в Openlayers doc и этот вопрос , я создал свои Векторы, добавил немного стиля и т. Д. *

Но все они помещаются вокруг LngLat (0,0) вместо правильных координат.

Вы можете видеть ниже, их свойства геометрии в порядке. Я не знаю, что мне там не хватает.

sreenshot

Ответы [ 2 ]

5 голосов
/ 10 июля 2011

Проблема заключается в том, что, хотя проекция Google Maps имеет формат EPSG: 900913, координаты ваших векторных объектов находятся в EPSG: 4326.

Таким образом, вы должны либо указать координаты в проекции Google Maps, либо использовать OpenLayers для преобразования координатна стороне клиента.Вот как вы это делаете:

feature.geometry.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"))

После преобразования объектов вы можете добавить слой на карту, и он должен отображать объекты правильно.

1 голос
/ 10 июля 2011

Какую проекцию координат вы используете? По названию вашего слоя я предполагаю, что вы используете базовый слой Google Maps.

Карты Google используют сферическую проекцию Меркатора, а OpenLayers по умолчанию использует EPSG: 4326. OpenLayers имеет API-интерфейсы, которые позволяют вам преобразовывать ваши координаты между различными проекциями, так что все ваши слои хорошо сочетаются друг с другом.

С некоторыми подробностями о ваших слоях я могу предоставить код для демонстрации этого.

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