2010-11-16 9 views
2

Je dois modifier l'ensemble de données affiché sur une carte en fonction des sélections sur la page et je voudrais le faire en créant plusieurs couches de marqueurs puis en basculant entre eux en fonction de entrée de l'utilisateur. Pour une raison quelconque, je ne peux pas ajouter un calque après que la carte a été rendue sur la page, cela ne devrait pas être si difficile que je pense que la syntaxe est mauvaise puisque Drupal configure la carte différemment des openlayers simples . Impossible d'obtenir l'objet de carte commeAjout et suppression de marqueurs dans Openlayers sur Drupal après chargement de la page

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

puis ajouter et supprimer des couches de marqueur à partir de lui? Peut-être qu'il y a une autre façon de l'obtenir?

Toute aide appréciée, - Chris

Répondre

2

Le module Drupal OpenLayers ne stocke paramètres dans Drupal.settings.openlayers.maps.

Qu'est-ce que vous avez besoin est quelque chose comme ceci:

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

L'instance réelle OpenLayers (ainsi qu'une copie des paramètres spécifiques à carte) sont stockés avec la méthode de jQuery .data(). Lorsque vous appelez le $('#map-id').data('openlayers'), vous récupérez un objet avec les membres map et openlayers correspondant respectivement aux paramètres de la carte et à l'instance de l'objet OL réel.

Vous pourriez envisager d'écrire un comportement OL pour gérer votre cas d'utilisation - consultez les comportements par défaut fournis par le module Drupal OpenLayers pour avoir une idée de comment cela fonctionne.