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:
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.
Est-ce que votre projection correspond à la couche de mosaïque? –
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