Добавление и удаление маркеров в открытых слоях на Drupal после загрузки страницы - PullRequest
2 голосов
/ 16 ноября 2010

Мне нужно изменить набор данных, отображаемый на карте, в соответствии с выбором на странице, и я хотел бы сделать это, создав несколько слоев маркеров, а затем переключаться между ними на основе пользовательского ввода.По какой-то причине я не могу добавить слой после рендеринга карты на странице, кажется, что это не должно быть так сложно, я думаю, что у меня может быть неправильный синтаксис, так как способ, которым Drupal настраивает карту, отличается от прямых открытых слоев.Могу ли я не получить объект карты, такой как

var map = Drupal.settings.openlayers.maps ["openlayers-map-auto-id-0"];

, затем добавить и удалить слои маркеровот него?может быть, есть другой способ получить это?

Любая помощь приветствуется, - Крис

1 Ответ

2 голосов
/ 02 декабря 2010

Модуль Drupal OpenLayers хранит только настройки в Drupal.settings.openlayers.maps.

Что вам нужно, это что-то вроде этого:

var ol = $('#openlayers-map-auto-id-0').data('openlayers');
var max_extent = ol.openlayers.getMaxExtent(); // Or some other OpenLayers method...
...

Фактический экземпляр OpenLayers (а также копия специфичных для карты настроек) сохраняются с помощью метода .data() jQuery. При вызове $('#map-id').data('openlayers') вы получите объект с map и openlayers членами, которые соответствуют настройкам карты и фактическому экземпляру объекта OL соответственно.

Возможно, вы захотите написать поведение OL для обработки вашего варианта использования - посмотрите поведение по умолчанию, предоставляемое модулем Drupal OpenLayers, чтобы понять, как это работает.

...