OpenLayers .containsPoint после панорамирования - PullRequest
0 голосов
/ 29 апреля 2009

Кажется, я ошибся или что-то упустил.

Я написал некоторый код, который перечисляет все векторные объекты на векторном слое OpenLayers - чтобы проверить, находится ли мышь внутри векторного объекта - если это так, то он отображает некоторую информацию, основанную на объекте.

Мне пришлось написать свои собственные методы, чтобы сделать это, потому что существующие элементы управления OpenLayers (выберите и т. Д.) Останавливаются после нахождения элемента под мышью, и я могу наложить несколько элементов друг на друга.

Моя проблема в том, что метод .containsPoint, похоже, использует координаты перед панорамированием. После увеличения или уменьшения геометрия, кажется, находится в правильном месте, и .containsPoint работает правильно, когда я наводю указатель мыши на карту.

Нужно ли что-то делать после панорамирования карты для обновления чего-либо (геометрия объекта)

Ответы [ 2 ]

2 голосов
/ 06 апреля 2010

Я понимаю, что у этого вопроса почти был первый день рождения, и он может быть недействительным больше, но я все равно попытаюсь ответить на него.

OpenLayers.Control.DragPan выполняет вызов карты после завершения панорамирования. Если вы проверите функцию панорамирования OpenLayers.Map, вы увидите этот комментарий внутри:

// only call setCenter if not dragging or there has been a change

Следующая логика в функции отражает этот комментарий.

Так что да, каждый раз, когда вы закончите панорамирование, вам нужно сделать что-то вроде:

dragpan.handler.up = function(evt)
{
    dx = dragpan.handler.last.x - evt.x;
    dy = dragpan.handler.last.y - evt.y;
    var centerPx = map.getViewPortPxFromLonLat(map.getCenter());
    var newCenterPx = centerPx.add(dx, dy);
    var newCenterLonLat = map.getLonLatFromViewPortPx(newCenterPx);
    map.setCenter(map.getCenter() + dragpan.handler.xy);
}

... и все должно волшебно работать на вас.

0 голосов
/ 23 июля 2009

Без примера кода очень сложно ответить на этот вопрос. OpenLayers может выбрать несколько объектов одним щелчком мыши. Вы уже пробовали OpenLayers 2.8?

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