2017-02-08 9 views
1

우리는 OpenLayers.js 버전 3.20을 사용하고 있습니다. 우리는 응용 프로그램이 여러 소스의 여러 레이어로 구성된 맵을 표시 할 수 있도록 사용자 정의 가능한 설정을 제공합니다.두 개의 다른 소스에서 두 레이어가있는 OpenLayers 맵이 다르게 확대됩니다. OpenLayers가 줌 레벨의 작동 방식을 변경할 수 있습니까?

이제 특정 고객 설정에서 주택과 건물을 포함하는지도 레이어와 도로 및 기타 인프라가 포함 된 다른 레이어가 있습니다. 이 두 레이어는 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 
    }); 
} 

를 사용하여 레이어를 만들 수 있는지 여부는 중요하지 않습니다

생성 된 레이어는 다음과 같이 구성됩니다. 두 개의 서로 다른지도 서비스 (OnshoreBaseMapUrlOnshorOperationalMapUrl)와 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 서버에 매개 변수를 전달하지만 맵의 배율을 재정의하는 데에도 사용할 수 있습니까?

다시 말해서, 모든 도움을 주시면 대단히 감사하겠습니다.

+0

타일 된 레이어와 투영 일치합니까? –

+0

우리는 그 문제를 조사하고 있었고 올바른 투영법을 지정하기 위해 코드를 변경했습니다. 테스트 결과 문제가 해결되었다고 표시하면 여기에서 업데이트 할 것입니다. – NilsAndreas

답변

1

답변은 ArcGIS 서버 측에있었습니다! OpenLayers를 포함한 클라이언트 측의 코드는 그 코드와 아무 관련이 없습니다. 세부 사항을 제공 할 수 없으므로이 이지도 서비스의 참조 비율의 차이로 인해 발생할 수 있다고 들었습니다.