2015-11-09 88 views
2

我想改變我的ol3地圖源的網址。我嘗試過使用諸如map.set或map.getlayers()。set或其他任何東西,但我似乎無法找到一種方法來訪問我的源對象。這裏是代碼:更改XYZ圖層的源網址並重繪圖層/地圖?

function init() { 
    var map = new ol.Map({ 
     target: 'map', 
     layers: [ 
      new ol.layer.Tile({ 
       source: new ol.source.XYZ({ 
        projection: 'PIXELS', 
        tileGrid: mapTileGrid, 
        url: loc 
       }) 
      }) 
     ], 
     view: new ol.View({ 
      projection: ol.proj.get('PIXELS'), 
      extent: mapExtent, 
      maxResolution: mapTileGrid.getResolution(0) 
      }) 
     }); 

map.getView().fit(mapExtent, map.getSize()); 
    console.log(map.get("layergroup").get("layers").get("url")); 
    map.get("layergroup").get("layers").set("url",loc); 
} 

什麼是改變url屬性和重新加載圖層的方法?

我也嘗試使用setSource函數,如下面的答案:here 但它似乎不工作(不能setSource的未定義)。

+0

任何反饋...? –

+0

是的,設法修復它後一段時間使用一些簡單的源代碼,但不是那麼簡單,將發佈在這裏,當我到我的電腦。 – user1640736

+0

@JonatasWalker'變種viewaux =新ol.View({ 投影:ol.proj.get( '像素'), 程度:mapExtent, maxResolution:mapTileGrid.getResolution(0), 旋轉:Math.PI/5 }); layer.setSource(SAUX); map.setView(viewaux);'就這麼簡單:) – user1640736

回答

1

嘗試以下

function init() { 
    var map = new ol.Map({ 
     target: 'map', 
     layers: [ 
      new ol.layer.Tile({ 
       source: new ol.source.XYZ({ 
        projection: 'PIXELS', 
        tileGrid: mapTileGrid, 
        url: loc 
       }) 
      }) 
     ], 
     view: new ol.View({ 
      projection: ol.proj.get('PIXELS'), 
      extent: mapExtent, 
      maxResolution: mapTileGrid.getResolution(0) 
      }) 
     }); 

map.getView().fit(mapExtent, map.getSize()); 
//get alll the layers exist on your map 
var layers = map.getLayers(); 
//lets assume you want to set the url for the first layer found 
layers[0].getSource().setUrl(loc); 
}