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

Javascript OpenLayers地图具有来自两个不同源的两个图层,缩放方式不同。OpenLayers可以改变缩放级别的行为吗?,javascript,openlayers,openlayers-3,arcgis,Javascript,Openlayers,Openlayers 3,Arcgis,在我们的应用程序中,我们使用的是OpenLayers.js版本3.20。 我们有一个可定制的设置,因此应用程序可以显示由多个来源的多个图层组成的地图 现在,在一个特定的客户设置中,我们有一个包含房屋和建筑物的地图层,另一个包含道路和一些其他基础设施的图层。 这两个层都由ArcGIS提供服务,但来自两个不同的服务器和两个不同的URL 这是一张说明问题的图像: 我是否选择使用创建层并不重要 function createTiledLayer(url, params, projection, nam

在我们的应用程序中,我们使用的是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
    });
}

创建的图层由以下两个不同的地图服务(
OnshoreBaseMapUrl
OnShoreOperationalMapUrl
)组成:
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请求的一部分,以挑出地图源中的特定图层,但这也可以用于覆盖地图的比例吗


再次感谢您的帮助。

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

您的投影是否与平铺层匹配?我们只是在研究这一点,并对代码进行了更改,以始终指定正确的投影。如果测试显示问题已经解决,我将在这里更新。
  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')
        ],