2013-03-07 3 views
0

J'essaie de faire en sorte que la barre de niveau de zoom affiche le même nombre de niveaux de zoom que mon cache hors ligne et c'est étonnamment difficile avec gwt-openlayers.Définir les niveaux de zoom pour gwt-openlayers et openstreetmap

J'ai essayé sans succès:

osmOptions.getJSObject().setProperty(
    "minZoomLevel", 5); 
osmOptions.getJSObject().setProperty(
    "maxZoomLevel", 11); 

Répondre

0

La méthode ci-dessous fait l'affaire pour moi maintenant:

/** 
* @param options 
* @param minZoomLevel the minimum for this is 3 for open streetmap 
* @param maxZoomLevel 
*/ 
private static void setZoomLevelRange(LayerOptions options, 
    int minZoomLevel, int maxZoomLevel) { 
    options.getJSObject().setProperty("zoomOffset", minZoomLevel); 

    int len = maxZoomLevel - minZoomLevel + 1; 
    double[] resolutions = new double[len]; 
    double curRes = 78271.51695/(Math.pow(2, minZoomLevel - 1)); 
    for (int i = 0; i < len; i++) { 
     resolutions[i] = curRes; 
     curRes = curRes/2; 
    } 

    options.setResolutions(resolutions); 
} 

// Exemple d'utilisation:

OSMOptions osmOptions = new OSMOptions(); 

    setZoomLevelRange(osmOptions, 5, 11); 

    OSM baseTileLayer = new OSM("Mapnik", 
     // for offline tiles: 
     GWT.getHostPageBaseURL() 
     + "tiles/${z}/${x}/${y}.png", 
     osmOptions); 

Les touches sont :

  1. il y a apparemment une résolution de niveau de zoom magique 1 (je n'ai pas trouvé comment il est calculé).
  2. Vous pouvez ajouter des résolutions plus élevées et plus basses en les multipliant ou en les divisant par 2.
  3. Il est essentiel de définir zoomOffset en fonction de ce que vous utilisez comme niveau de zoom minimum.

Votre bienvenue et oui, vous pouvez copier le code que vous voulez.

Références: http://forum.openstreetmap.org/viewtopic.php?id=6444 http://dev.openlayers.org/apidocs/files/OpenLayers/Layer/XYZ-js.html#OpenLayers.Layer.XYZ.zoomOffset http://osgeo-org.1560.n6.nabble.com/Can-t-restrict-Openlayers-Layer-OSM-to-use-specific-zoom-levels-td3926546.html

Questions connexes