- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我整天都在做这个,老实说,我没有主意了。我有一些 WMS 层,我想根据当前的缩放级别显示/不显示。是的,我已经阅读了 API 文档,它们似乎一如既往地清晰,但我遵循了所有建议,但没有得到想要的结果:(
这是我查看的来源之一:http://trac.osgeo.org/openlayers/wiki/SettingZoomLevels
然后更糟糕的是,我发现如果您有一个在加载时显示的 Open Street Map 基础层,它似乎会限制您对 map 的 numZoomLevels 的控制,这正是我所需要的,因为我确实想将其用作我的加载基础层...
所以我的问题是:
我做错了什么?在加载时使用 Open Street Map 基础层时,真的没有控制缩放级别的解决方法吗?还是有什么我不知道的?
以下是我的一些代码尝试:拍摄 1:tib_villages 图层应该只在缩放级别为 8-10 时显示,不起作用!
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: null, //setting the map's zoom levels to null
allOverlays: false
}
var osm = new OpenLayers.Layer.OSM(); //MY base layer
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: 10, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
);
Take 2:tib_villages 层应该只在缩放级别为 8-10 时显示, map 应该只有 10 个缩放级别,但 Open Street Map Layer 强制要求它有 19 个,这是行不通的!
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: 10, //setting the map's zoom levels to 10 only
allOverlays: false
}
var osm = new OpenLayers.Layer.OSM(); //MY base layer
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: null, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
)
;
拍摄 3:在加载时去除 Open Street Map 基础图层后, map 只有指定的 10 个缩放级别,但 tib_villages 图层应该只在缩放级别为 8-10 时显示,不起作用!
var options = {
controls: [new OpenLayers.Control.Navigation()], //Needed to use GeoExt controls such as the zoomslider
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
units: 'm',
numZoomLevels: 10, //setting the map's zoom levels to 10
allOverlays: false
}
//MY overlay layer
var tib_villages = new OpenLayers.Layer.WMS(
"Villages", "http://localhost:8080/geoserver/wms", {layers: 'cite:tib_villages', transparent: true, numZoomLevels: 10, minZoomLevel: 8}, {isBaseLayer: false, displayInLayerSwitcher: true, visibility: true}
);
非常感谢您的所有建议!
艾莎
最佳答案
尝试使用 minResolution
和 maxResolution
而不是 minZoomLevel
。它通常工作正常。如果您调用 map.getResolution()
方法,您可以获得任何变焦杆的分辨率。
另一种选择是监听 OpenLayers.Map
的 zoomend
事件并相应地切换图层可见性。像这样:
map.events.on({ "zoomend": function (e) {
if (this.getZoom() > 2) {
layer1.setVisibility(false);
layer2.setVisibility(true);
}
else {
layer2.setVisibility(false);
layer1.setVisibility(true);
}
}
});
关于javascript - 基于缩放级别显示 WMS 图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000734/
有谁知道QGIS中是否支持WMS-T? 通过该应用程序我可以添加 WMS 图层,但我无法使用 WMS-T(没有设置时间参数的地方)。 我一直在浏览 Python 插件,虽然有些插件可以处理时间(时间管
我需要一些帮助。我对 Geoserver 和 WMS 的概念很陌生,我正在寻找非常基本的帮助。我已经下载并安装了 Geoserver,设置了图层等(包括 sld),但是,我不知道如何从这里获取这些信息
我已经使用 PostGIS v2.4.2 扩展配置了 PostgreSQL v9.5.12 数据库。我使用 GeoServer v2.13.1 将数据库表渲染为 WMS 图层,并使用 Openlaye
本文整理了Java中org.geoserver.wms.WMSInfoImpl类的一些代码示例,展示了WMSInfoImpl类的具体用法。这些代码示例主要来源于Github/Stackoverflow
我正在尝试简化我的应用程序,并想知道 OpenLayers 何时物理调用 WMS 服务器?此外,层可见性是否也在调用中起作用? 实例化一个层时会发生吗 var layer = new OpenLaye
我正在尝试进行自动映射。我想要一张不确定性 map ,其中的不确定性由等值线显示。我想导出这些等值线和与它们关联的值,然后通过网络 map 服务显示它们。是否可以?通过以下代码,您可以生成轮廓线 re
我正在尝试使用 OpenLayers 查看 WMS 图层,但未显示任何内容。控制台中未显示任何错误消息。此外,当我尝试使用浏览器 (Firefox) 访问请求字符串时, map 显示得很好。这是代码。
一般来说: 是否可以根据 cql 过滤器或其他参数从单个 wms 查询中对某些 wms 功能进行不同的样式设置? 特别是: 在 wms 查询中,返回特征集合的栅格(即样式为红点的点), 我希望 geo
我正在我的应用程序中实现多个外部 WMS 服务。不幸的是,这些 WMS 服务不传递有关图 block 最小缩放级别的信息,仅传递有关 WMS 图层扩展的信息。有没有办法设置 WMS 开始显示的最小缩放
我使用以下 JavaScript block 来尝试显示 WMS 图层。我正在使用 OpenLayers 2.8。 map 的基础图层 (Openstreetmap) 显示正确,它缩放到正确的区域,“
我正在使用 Google Maps v2 显示来自 wms 的图 block 。我提到了this地点。加载图 block 时出现问题,它们加载了多次我不知道?任何人都可以帮助我吗? 这是我的代码 pa
我目前正在从事仓库管理系统项目: 1.元素大师 2.入境元素 3.向外 由内向外是一个有点复杂的过程。但这不是问题。 一切正常,我想生成报告。我将每个商品的库存存储在 item_stock 表中,该表
我在应用程序中使用 WMS 层,我需要使用新参数刷新它。 我确实正确刷新了 WMS 图层,但我找不到刷新其选择控件的方法。所以我得到了新图层,但无法单击任何点来显示其信息。这是我的一段代码: Laye
我想知道如何使用 openlayers 使 wms 图层透明。 每个非透明层的当前 javascript 如下: var lyr_GDPSETAAirtemperatureC = new ol.lay
我想创建一个面板,用户可以在其中更改所选图层的样式。 对于矢量图层,更新 ol.style 配置没有问题,但我真的不知道如何继续处理 ImageWMS 层。 Based on this post ,我
我正在学习使用 MapServer 创建 WMS 服务,之后我想开发一个可以访问它的 PyQt 桌面应用程序。我不知道最好的方法是什么,因为我见过很多网络解决方案,但这不是我想要的。我也不知道是否有图
我想在 Angular 4 中的 map 中添加一个示例 wms-layer 以及 GeoServer 中的 OpenLayers | 2. 我不知道执行此操作的正确语法。 也许有人在 Angular
我整天都在做这个,老实说,我没有主意了。我有一些 WMS 层,我想根据当前的缩放级别显示/不显示。是的,我已经阅读了 API 文档,它们似乎一如既往地清晰,但我遵循了所有建议,但没有得到想要的结果:(
如何在不调用“removeLayer”的情况下调整传单中的不透明度?我已经在我的 map 上使用了“map.addLayer(myLayer)”。我看到有一个 setParams() 方法,但是当我调
我正在 React Native 中开发一个移动应用程序,需要使用 Web map 服务。我还没有找到任何允许使用 WMS 并同时进行 native react 的库或框架。在React(Web)中我
我是一名优秀的程序员,十分优秀!