0

ズーム レベル バーにオフライン キャッシュと同じ数のズーム レベルを表示させようとしていますが、gwt-openlayers では驚くほど困難です。

私は成功しなかった:

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

1 に答える 1

0

以下の方法は今私のためにトリックをやっています:

/**
 * @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);
}

// 使用例:

    OSMOptions osmOptions = new OSMOptions();

    setZoomLevelRange(osmOptions, 5, 11);

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

キーは次のとおりです。

  1. どうやらマジックズームレベル1の解像度があるようです(計算方法はわかりません)。
  2. 2 で乗算または除算することにより、より高い解像度とより低い解像度を追加できます。
  3. 最小ズーム レベルとして使用するものに従って zoomOffset を設定することが重要です。

ようこそ、はい、必要に応じてコードをコピーできます。

参考文献: 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

于 2013-03-07T02:51:41.537 に答える