Suite

Comment empêcher le zoom de la couche vectorielle si la couche de base ne permet pas de zoomer plus loin

Comment empêcher le zoom de la couche vectorielle si la couche de base ne permet pas de zoomer plus loin


J'utilise différents types de couche de base dans OpenLayers et j'y dessine des couches vectorielles. J'ai des problèmes avec les couches de base des satellites Google.

J'ai remarqué que la vue satellite a différents niveaux de zoom à différents endroits. À certains endroits, la couche de base ne zoome pas, mais la couche vectorielle zoome.

Comment puis-je déterminer si un niveau de zoom plus élevé est disponible pour une certaine couche de base ?

Dans les images ci-dessous, un coin est marqué en rouge. Remarquez le changement de position de la couche vectorielle

Vecteur au niveau de zoom 19


Même vecteur au niveau de zoom 20


Une chose que vous pouvez faire si vous avez des couches de base avec des résolutions différentes est de détecter la couche dans lechanger la couche de basecallback, puis réinitialisez le tableau des résolutions de la carte et redessinez le contrôle de la barre de zoom afin qu'il ne puisse zoomer que sur les résolutions de la nouvelle couche de base.

map.events.register("changebaselayer", this, function (obj) { if (obj.layer.name == 'your_layer_name') { map.baseLayer.resolutions = [20, 10, 5]; map.baseLayer.numZoomLevels = 3; map.baseLayer.fractionalZoom = false; map.baseLayer.maxResolution = 20; map.baseLayer.minResolution = 5; map.zoomTo(2, map.getCenter()); panzoombar.redraw(); } });

En d'autres termes, vous devez avoir des tableaux de résolutions différentes si vous utilisez une couche avec des résolutions autorisées différentes. Ceux-ci doivent être préchargés au moment de la conception, car vous ne pouvez pas facilement détecter si une couche particulière autorise un certain zoom du client.