2015-04-28 20 views
0

Openlayers 3中有一種方法可以獲取附加到特定html元素的地圖嗎?Openlayers3從元素獲取地圖

是這樣的:

var map = new ol.Map({ 
    view: new ol.View({ 
    center: [0, 0], 
    zoom: 1 
    }), 
    layers: [ 
    new ol.layer.Tile({ 
     source: new ol.source.MapQuest({layer: 'osm'}) 
    }) 
    ], 
    target: 'map' 
}); 

//Later on, in a different file 
var myMap = $("#map").ol.Map() 

回答

0

的地圖對象具有與HTML元素的引用,但HTML元素不必在地圖對象的引用。 HTML元素根本不知道地圖對象。

如果你使用jQuery,你可能會使用data method在jQuery對象中存儲對映射的引用。例如:

var map = new ol.Map({ 
    target: 'map', 
    //... 
}); 
$('#map').data('map', map); 

然後,爲了從元素到地圖的引用:

var map = $('#map').data('map'); 
0

爲了清楚起見,這裏是另一個例子展示erilem的回答與地圖VAR和地圖的div是未命名爲'地圖'。

mapElement = '#mapDiv' 
mymap = new ol.Map({   
    target: mapDiv, 
    view: new ol.View({ 
    ... 
    }) 
}); 
$(mapElement).data('map', mymap); 

然後,您可以使用數據方法使用數據引用那個帶有jquery的映射。在我的情況下,我然後想使用ol updateSize()來更新mymap。

thisMap = $(mapElement).data('map') 
thisMap.updateSize(); 

當我在頁面上有多個地圖時,這非常有用。當我使用:

mapDiv = id +'-map'  
mapElement = '#' + mapDiv 
maps[i] = new ol.Map({   
    target: mapDiv, 
    view: new ol.View({ 
     ... 
    }) 
}); 
$(mapElement).data('map', maps[i]) 

然後:

thisMapId = activeDataset + '-map' 
thisMapElement = '#' + thisMapId 
thisMap = $(thisMapElement).data('map') 
thisMap.updateSize() 

其中id = activeDataset