首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置gwt-openlayer和openstreetmap的缩放级别

设置gwt-openlayer和openstreetmap的缩放级别
EN

Stack Overflow用户
提问于 2013-03-07 10:48:52
回答 1查看 487关注 0票数 0

我试图让缩放级别栏显示与我的离线缓存相同数量的缩放级别,但使用gwt-openlayer很难做到这一点。

我试过了,但没有成功:

代码语言:javascript
复制
osmOptions.getJSObject().setProperty(
    "minZoomLevel", 5);
osmOptions.getJSObject().setProperty(
    "maxZoomLevel", 11);
EN

回答 1

Stack Overflow用户

发布于 2013-03-07 10:51:42

下面的方法现在正在为我做这个把戏:

代码语言:javascript
复制
/**
 * @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);
}

//使用示例:

代码语言:javascript
复制
    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. 根据您使用的最小缩放级别来设置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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15262167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档