Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改XYZ图层的源url并重新绘制图层/地图?_Javascript_Openlayers 3 - Fatal编程技术网

Javascript 更改XYZ图层的源url并重新绘制图层/地图?

Javascript 更改XYZ图层的源url并重新绘制图层/地图?,javascript,openlayers-3,Javascript,Openlayers 3,我想更改我的ol3地图源的url。我尝试过使用map.set或map.getlayers().set之类的东西,但似乎找不到访问源对象的方法。代码如下: function init() { var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.XYZ({

我想更改我的ol3地图源的url。我尝试过使用map.set或map.getlayers().set之类的东西,但似乎找不到访问源对象的方法。代码如下:

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函数,如下所示: 但它似乎不起作用(无法设置未定义的源)。

尝试以下操作

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); 
}

是的,在一段时间后使用一些简单的setsource修复了它,但没有那么简单,当我到达我的电脑时,我会在这里发布它。@JonatasWalker
var viewaux=new ol.View({projection:ol.proj.get('PIXELS'),extent:mapExtent,maxResolution:mapTileGrid.getResolution(0),旋转:Math.PI/5});layer.setSource(saux);map.setView(viewaux)就这么简单:)