2017-02-08 1 views
1

私たちのアプリケーションでは、OpenLayers.jsバージョン3.20を使用しています。 カスタマイズ可能な設定が用意されているので、アプリケーションは複数のソースからの複数のレイヤーで構成されるマップを表示できます。2つの異なるソースからの2つのレイヤーを使用したOpenLayersマップのズームが異なっています。 OpenLayersはズームレベルの動作方法を変更できますか?

特定の顧客設定では、家屋や建物を含む地図レイヤーと、道路やその他のインフラストラクチャを含む別のレイヤーがあります。 これらのレイヤーはどちらもArcGISから提供されますが、2つの異なるサーバーと2つの異なる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を検索し、同様の問題についてGoogleで検索したところ、これまで何も見つかりませんでした。

上記のコードサンプルで示したように、マップソース内の特定のレイヤーを1つにするREST要求の一部として、ArcGISサーバーにパラメータを渡しますが、マップのスケールをオーバーライドするためにも使用できますか?

また、どんな助けもありがとうございます。

+0

タイル張りのレイヤーと投影が一致していますか? –

+0

ちょうどそれを調べて、正しい投影を常に指定するコードを変更しました。テストで問題が解消されたと表示されたらここで更新します。 – NilsAndreas

答えて

1

答えはArcGIS Server側です!クライアント側のコード(OpenLayersを含む)はそれとは関係ありませんでした。 私はそれを修正することに関与していなかったので、詳細を提供することはできませんが、このが地図サービスの参照尺度の違いによって生じた可能性があると言われています。

関連する問題