2016-01-24 4 views
2

Я добавляю новые функции к решению карты, использующему OpenLayers 2.13. Это решение отображает функции над Норвегией, поэтому мы используем проекцию UTM33N (EPSG: 32633).Векторный слой OpenLayers отображается со смещением

В настоящее время я пытаюсь добавить выбираемый/функциональность подсказке на новый слой , который должен отображать GPS-треки (объект LineString) Решение уже имеет подобный «выбираемые» функциональность на несколько ее слоев. Эти слои добавляются в виде массива в OpenLayers.Control.SelectFeature.

Прежде чем добавить слой GPS к элементу SelectFeature, я мог видеть, что он отображается правильно на карте и в правильном положении . (Изображение 1)

При настройке карты, добавить слой GPS в слои в элементе управления SelectFeature, который находится внутри обычай сделал TooltipControl:

tooltipControl.getSelectFeatureControl().selectFeatureControl.layers.push(gpsLayer); 

Когда я добавляю к регулятору SelectFeature однако он отображается со значительным смещением от того места, где он должен был быть. (Изображение 2) Смещение на самом деле зависит от уровня масштабирования, потому что, когда я увеличиваю функции, приближаюсь к их правильному положению, но все еще не правильно.

От проверки DOM я вижу, что перед добавлением слоя GPS в элемент управления SelectFeature слой визуализировался внутри div под названием «OpenLayers_Layer_Vector_55». При панорамировании на карте изменяется стиль div, в частности, свойства «left» и «top» из div изменяются, чтобы гарантировать, что линейная линия отображается в правильном положении.

После добавления его в SelectFeature он отображается внутри div под названием «OpenLayers_Layer_Vector_RootContainer_283» вместе со всеми другими выбираемыми слоями. Теперь уровень GPS не отображается в правильной позиции на карте. OpenLayers все еще обновляет «левые» и «верхние» свойства Vector_55 div , когда я панорамирую, но уровень GPS не влияет на это, поскольку теперь он содержится в div RootContainer_283.

Как я могу отобразить слой GPS в правильном положении и все еще иметь его в элементе управления SelectFeature?

Изображение 1 - Правильный рендеринг:

Изображение 2 - Неправильный перевод:

Заранее спасибо!

+0

Насколько велика смещение? Метров, километров? Какие прогнозы вы используете? – MortenSickel

+0

Смещение фактически зависит от уровня масштабирования. Когда я увеличиваю масштаб, функции приближаются к их правильному положению, но все еще не верны. Используемая проекция - EPSG: 32633 (UTM33N). –

+0

OpenLayers, несомненно, может обрабатывать несколько векторных слоев с помощью элемента управления selectFeature, поэтому проблема находится где-то в другом месте. Может быть, в пользовательском элементе управления selectFeature? – fradal83

ответ

1

После нескольких часов поиска я, наконец, обнаружил, что при инициализации уровень GPS был равен «1,2».

Этот слой, используемый, чтобы быть слой WMS (Наследование от Grid), поэтому установка его отношение будет означать:

соотношение {Float} Используется только тогда, когда в режиме одной плитки, это указывает отношение размер одной плитки до размера карты.

Но соотношение означает, что что-то еще для векторного слоя:

отношение {Float} Это определяет отношение размера visiblity особенностей векторного слоя до размера карты.

С коэффициентом по умолчанию, равным 1, он отображается в правильном положении! Спасибо комментаторам за ваш вклад.

Смежные вопросы