우리는 OpenLayers.js 버전 3.20을 사용하고 있습니다. 우리는 응용 프로그램이 여러 소스의 여러 레이어로 구성된 맵을 표시 할 수 있도록 사용자 정의 가능한 설정을 제공합니다.두 개의 다른 소스에서 두 레이어가있는 OpenLayers 맵이 다르게 확대됩니다. OpenLayers가 줌 레벨의 작동 방식을 변경할 수 있습니까?
이제 특정 고객 설정에서 주택과 건물을 포함하는지도 레이어와 도로 및 기타 인프라가 포함 된 다른 레이어가 있습니다. 이 두 레이어는 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
});
}
를 사용하여 레이어를 만들 수 있는지 여부는 중요하지 않습니다
생성 된 레이어는 다음과 같이 구성됩니다. 두 개의 서로 다른지도 서비스 (OnshoreBaseMapUrl
및 OnshorOperationalMapUrl
)와 layerCreateFunction
에서 오는 이런 layers
배열, 위에 표시된 두 기능 중 하나입니다 : 우리는 사용하고
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를 통해 검색하고 유사한 문제를 봤습니다. 지금까지 아무 것도 없습니다.
위의 코드 샘플에서 볼 수 있듯이 맵 소스의 특정 레이어를 구분하는 REST 요청의 일부로 ArcGIS 서버에 매개 변수를 전달하지만 맵의 배율을 재정의하는 데에도 사용할 수 있습니까?
다시 말해서, 모든 도움을 주시면 대단히 감사하겠습니다.
타일 된 레이어와 투영 일치합니까? –
우리는 그 문제를 조사하고 있었고 올바른 투영법을 지정하기 위해 코드를 변경했습니다. 테스트 결과 문제가 해결되었다고 표시하면 여기에서 업데이트 할 것입니다. – NilsAndreas