具有来自两个不同来源的两个图层的OpenLayers地图以不同方式缩放。 OpenLayers可以更改缩放级别的行为方式吗?

时间:2017-02-08 11:32:07

标签: javascript openlayers openlayers-3 arcgis

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

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

这是一个说明问题的图片: Roads very wide, houses stay normal

我是否选择使用

创建图层并不重要
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并搜索了类似的问题,到目前为止一无所获。

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

再次,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

答案是在ArcGIS Server端!客户端的代码(包括OpenLayers)与它无关。 我没有参与修复它,因此我无法提供详细信息,但我被告知此可能是由地图服务的参考比例差异引起的。