【问题标题】:OpenLayers map with two layers from two different sources zoom differently. Can OpenLayers change how zoom levels behave?OpenLayers 地图包含来自两个不同来源的两个图层以不同方式缩放。 OpenLayers 可以改变缩放级别的行为吗?
【发布时间】:2017-06-26 00:03:14
【问题描述】:

在我们的应用程序中,我们使用的是 OpenLayers.js 版本 3.20。 我们有一个可定制的设置,因此应用程序可以显示由多个来源的多个图层组成的地图。

现在,在特定的客户设置中,我们有一个包含房屋和建筑物的地图图层,以及另一个包含道路和其他一些基础设施的图层。 这两个图层均由 ArcGIS 提供,但来自两个不同的服务器和两个不同的 URL。

这是说明问题的图像:

我是否选择使用创建图层并不重要

function createTiledLayer(url, params, projection, name) {
    return new ol.layer.Tile({
        source: new ol.source.TileArcGISRest({
            url: url,
            projection: projection,
            params: params
        }),
        name: name
    });

}

function createImageLayer(url, params, projection, name) {
    return new ol.layer.Image({
        source: new ol.source.ImageArcGISRest({
            ratio: 1,
            params: params,
            url: url,
            projection: projection
        }),
        name: name
    });
}

创建的图层由layers 数组组成,就像这样,来自两个不同的地图服务(OnshoreBaseMapUrlOnshorOperationalMapUrl),layerCreateFunction 是上面显示的这两个函数之一:

  layers: [
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl,{ 'LAYERS': 'show:7' },primaryMapSetup.projection,'Country Coast Polygon'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl,{ 'LAYERS': 'show:6' },primaryMapSetup.projection,'Onshore Bounderies'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl,{ 'LAYERS': 'show:5' },primaryMapSetup.projection,'Field Sectors Devider poly'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl, { 'LAYERS': 'show:4' },primaryMapSetup.projection, 'Field Sector Devider'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl, { 'LAYERS': 'show:3' },primaryMapSetup.projection, 'Land Marks'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl, { 'LAYERS': 'show:2' },primaryMapSetup.projection, 'Road Tracks'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl, { 'LAYERS': 'show:1' },primaryMapSetup.projection, 'Major Roads'),
        primaryMapSetup.layerCreateFunction(OnshoreBaseMapUrl, { 'LAYERS': 'show:0' },primaryMapSetup.projection, 'Roads'),
        primaryMapSetup.layerCreateFunction(OnshoreOperationalMapUrl, { 'LAYERS': 'show:2' },primaryMapSetup.projection, 'Pipeline Station Complex'),
        primaryMapSetup.layerCreateFunction(OnshoreOperationalMapUrl, { 'LAYERS': 'show:1' },primaryMapSetup.projection, 'GW Monitoring Well'),
        primaryMapSetup.layerCreateFunction(OnshoreOperationalMapUrl, { 'LAYERS': 'show:0' },primaryMapSetup.projection, 'Wells')
        ],

我们使用的是 OpenLayers 的内置缩放功能,因此在加载图层或缩放时我们不会做任何花哨的事情。

我的直觉是,这与 ArcGIS 方面的资源设置有关。

我正在寻找有关如何解决此问题的线索,已通过 API 搜索并在 Google 上搜索类似问题,但到目前为止一无所获。

如上面的代码示例所示,我们将参数作为 REST 请求的一部分传递给 ArcGIS 服务器,以挑选出地图源中的特定图层,但这也可以用于覆盖地图的比例吗?

再次感谢任何帮助。

【问题讨论】:

  • 你的投影是否与平铺层匹配?
  • 我们只是在调查这个问题,并且对代码进行了更改以始终指定正确的投影。如果测试表明问题已经消失,我会在这里更新。

标签: javascript openlayers openlayers-3 arcgis


【解决方案1】:

答案在 ArcGIS Server 端!客户端的代码(包括 OpenLayers)与它无关。 我没有参与修复它,所以我无法提供详细信息,但有人告诉我,这可能是由于地图服务的参考比例不同造成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多