2017-02-02 10 views
0

私は「LoadMap」と呼ばれる機能私はオンデマンドの更新でトリガするにはどうすればよい/ ol.Map

rcisWebMapLoad.prototype.LoadMap = function (param1, param2) { 
    //Get some vector objects and create layers 
    var fieldVectorObjs = rcisWebMapVectorObjs.GetFieldVectorObjects(param1, param2); 
     var objectVectorLines = rcisWebMapVectorObjs.GetLinesVectorObjects(param1, param2, 1); 

     //Create Map object and add layers then insert into map div 
     control.map = new ol.Map({ 
      target: 'map', 
      renderer: 'canvas', 
      layers: layers, 
      view: new ol.View({ 
       projection: 'EPSG:4326', 
       center: [0, 0], 
       zoom: 8 
      }) 
     }); 

      //******* MapServer imagery *************** 
      var aerial = new ol.layer.Tile({ 
       name: 'Imagery', 
       source: new ol.source.TileWMS({ 
        url: mapServerPath.ResponseString, 
        params: { 'LAYERS': 'aerial', 'FORMAT': 'image/png', 'TILED': true }, 
        serverType: 'mapserver' 

       }) 

      }); 
      control.map.addLayer(aerial); 


    } 

これは素晴らしいマップをロードを持っているの再描画!

私は、私は別のマップ、すなわちに切り替えたいときしかし問題は付属しています...マップ上の私の画像とベクトルオブジェクトを持っている(別の画像およびベクトルオブジェクト)...

UPDATE: 元々私はマップが更新されていないと思っていましたが、実際に別のマップが生成され、元のマップのすぐ下に追加されました...別のマップを表示するために既にあるマップオブジェクトを再利用したり、

私はAngularJSを使用しているため、マップパラメータをサービスに渡すので、ページをもう一度呼び出すことはできず、以前に提案されたようにクエリ文字列からパラメータを取得することはできません。

これは、オンラインマップの主な機能であると思われます。

すべてのヘルプは大幅それでは、私がやってしまったことはマップを破壊することだった

+0

を作成する前に、マップオブジェクトを破壊します)( 'map.getViewを試してみました。変更()' ???これにより、変更イベントがマップビューに表示されます。 http://openlayers.org/ja/latest/apidoc/ol.View.html#changed。または、おそらく 'map.changed()' – pavlos

+0

http://openlayers.org/ja/latest/apidoc/ol.Map.html#renderが地図を再描画します。同期しているhttp://openlayers.org/ja/latest/apidoc/ol.Map.html#renderSyncもあります。 – mistapink

+0

はい、私はこれを試してみましたが、何も起こりませんか? –

答えて

0

オーケーを高く評価したので、私はOpenLayersを3

用マップオブジェクトのオンデマンドリフレッシュを強制することができませんでしたさ毎回新しいオブジェクトを作成します。それはこのようになります。上記の例ではそう

...あなたはまた、あなたの.factoryロード機能で空のマップを作成することを確認する必要がありangularJSユーザーの場合

(そう破壊するものがあります最初に)...角度を使用していない場合は、ページロードにマップを作成するだけです。

function rcisWebMapLoad() {   

     this.map = new ol.Map({}); 

    } 



rcisWebMapLoad.prototype.LoadMap = function (param1, param2) { 
//Get some vector objects and create layers 
var fieldVectorObjs = rcisWebMapVectorObjs.GetFieldVectorObjects(param1, param2); 
    var objectVectorLines = rcisWebMapVectorObjs.GetLinesVectorObjects(param1, param2, 1); 

     var layers = []; 

新しいもの

 control.map.setTarget(null); 
    control.map = null; 

    //Create Map object and add layers then insert into map div 
    control.map = new ol.Map({ 
     target: 'map', 
     renderer: 'canvas', 
     layers: layers, 
     view: new ol.View({ 
      projection: 'EPSG:4326', 
      center: [0, 0], 
      zoom: 8 
     }) 
    }); 

     //******* MapServer imagery *************** 
     var aerial = new ol.layer.Tile({ 
      name: 'Imagery', 
      source: new ol.source.TileWMS({ 
       url: mapServerPath.ResponseString, 
       params: { 'LAYERS': 'aerial', 'FORMAT': 'image/png', 'TILED': true }, 
       serverType: 'mapserver' 

      }) 

     }); 
     control.map.addLayer(aerial); 


} 
関連する問題