2017-02-08 1 views
1

Dans notre application, nous utilisons OpenLayers.js version 3.20. Nous avons une configuration personnalisable, de sorte que l'application peut afficher une carte composée d'un certain nombre de couches de plusieurs sources.La carte OpenLayers avec deux couches de deux sources différentes effectue un zoom différent. OpenLayers peut-il modifier le comportement des niveaux de zoom?

Maintenant, dans une configuration client spécifique, nous avons une couche cartographique contenant des maisons et des bâtiments, et une autre couche contenant des routes et d'autres infrastructures. Ces deux couches proviennent d'ArcGIS, mais proviennent de deux serveurs différents et de deux URL différentes.

C'est une image illustrant le problème: Roads very wide, houses stay normal

Peu importe si je choisis de créer les couches en utilisant

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

}

ou

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 
    }); 
} 

Les couches créées sont composées avec un tableau layers, comme celui-ci, venant de deux services de carte différents (OnshoreBaseMapUrl et OnshorOperationalMapUrl) et l'layerCreateFunction est l'une de ces deux fonctions ci-dessus:

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') 
     ], 

Nous utilisons la fonctionnalité de zoom intégré de OpenLayers, Nous ne faisons donc rien d'extraordinaire quand il s'agit de charger des calques ou de zoomer. Mon intuition est que c'est quelque chose à voir avec la configuration de la ressource sur le côté ArcGIS des choses.

Je suis à la recherche d'indices sur la façon de résoudre ce problème, après avoir parcouru l'API et googlé pour des problèmes similaires, et n'ai rien trouvé jusqu'à présent. Comme le montrent les exemples de code ci-dessus, nous transmettons des paramètres au serveur ArcGIS dans le cadre de la requête REST pour sélectionner des couches particulières dans une source cartographique, mais cela peut-il également être utilisé pour remplacer les échelles des cartes?

Encore une fois, toute aide est grandement appréciée.

+0

Est-ce que votre projection correspond à la couche de mosaïque? –

+0

Nous étions en train d'examiner cela, et avons apporté des modifications au code pour toujours spécifier la projection correcte. Je vais mettre à jour ici si les tests montrent que le problème a disparu. – NilsAndreas

Répondre

1

La réponse était du côté d'ArcGIS Server! Le code du côté client (y compris OpenLayers) n'a rien à voir avec ça. Je n'ai pas été impliqué dans la correction, donc je ne peux pas fournir de détails mais on m'a dit que ce pouvait avoir été causé par des différences dans les échelles de référence aux services de carte.