Suite

Existe-t-il un moyen de limiter la carte d'ensemble à un certain niveau de zoom ?


Le contrôle de carte de vue d'ensemble OpenLayers fonctionne très bien lorsque j'utilise des options standard. Je voudrais limiter la vue d'ensemble à une résolution, mais je n'arrive pas à trouver la bonne combinaison de valeurs pour les propriétés et mapOptions. Existe-t-il un moyen de forcer la carte d'ensemble à rester à un seul niveau de zoom ?

L'exemple de code ci-dessous utilise l'option "numZoomLevels : 1", mais cela n'a aucun effet.

function init() { // commence par une vérification du navigateur. Si c'est IE6, les png transparents ne sont pas pris en charge var ua = $j.browser; if(ua.msie && ua.version.slice(0, 1) == "6") { var imgtype = 'image/gif'; } else { var imgtype = 'image/png'; } // Définir une projection pour la carte var proj = new OpenLayers.Projection("EPSG:4326"); // Définir les options de la carte et commencer avec un jeu de contrôles vide var mapOptions = { contrôles : [], projection : new OpenLayers.Projection("EPSG:900913"), displayProjection : proj, units : "m", numZoomLevels : 20 } ; // Crée l'objet carte var map = new OpenLayers.Map('map', mapOptions); // Définir les options de la carte d'aperçu var OverviewOptions = { size : new OpenLayers.Size(300, 200), maximisé : true, minRectSize : 0, autoPan : true, mapOptions : { projection : new OpenLayers.Projection("EPSG:900913" ), displayProjection : proj, units : "m", resolutions : [90], numZoomLevels : 1 // cela n'a aucun effet, la carte ov effectue toujours un zoom avant et arrière avec la carte } } ; // Ajout de contrôles à la carte map.addControl(new OpenLayers.Control.OverviewMap(overviewOptions)); map.addControl(nouveau OpenLayers.Control.Navigation()); map.addControl(new OpenLayers.Control.PanZoomBar({panIcons : false})); map.addControl(nouveau OpenLayers.Control.ScaleLine()); map.addControl(nouveau OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.Scale($('scale'))); map.addControl(new OpenLayers.Control.MousePosition({ element : $('location') })); // Ajout de couches var gmap = new OpenLayers.Layer.Google("Google Streets", { numZoomLevels : 20 }); map.addLayers([gmap]); // Commencer la carte à un point particulier var point = new OpenLayers.LonLat(-118, 34); point.transform(proj, map.getProjectionObject()); map.setCenter(point, 16); } ; // Termine l'init()

Essayez de commenter lerésolutionsattribut dans lemapOptionsobjet. J'ai créé un exemple basé sur votre code (avec quelques modifications, j'ai eu du mal à faire fonctionner la couche Google, alors je me suis abonné à la couche http://osgeo.org/ world) et quand je me débarrasse durésolutionsattribut, la carte d'ensemble fonctionne comme prévu.


Vous avez un exemple (de la façon de modifier les options par défaut pour la carte d'ensemble) en ligne à cette URL.

// crée un contrôle de carte d'aperçu avec des options autres que celles par défaut var controlOptions = { maximisé: true, mapOptions: OpenLayers.Util.extend(mapOptions, { maxResolution: 156543.0339, maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34) }), calques : [jplOverview] } var Overview2 = new OpenLayers.Control.OverviewMap(controlOptions); map2.addControl(présentation2) ;

La page wiki donne également plus d'exemples. Je suppose que ce que vous cherchez est déjà fait ici :

// Si vous souhaitez avoir une carte d'ensemble qui ne zoome pas du tout, donnez-lui un seul niveau de zoom : var options = {mapOptions: {numZoomLevels: 1}}; map.addControl(nouveau OpenLayers.Control.OverviewMap(options));

Pour information, Carte d'ensemble Les options sont disponibles sur la page de documentation.


Voir la vidéo: Postilain kuulemistilaisuus (Octobre 2021).