Openlayers从元素中获取地图
Openlayers3 get map from element
Openlayers 3 中有没有办法获取附加到特定 html 元素的地图?
类似于:
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()
地图对象引用了 HTML 元素,但 HTML 元素没有引用地图对象。 HTML 元素根本不知道地图对象。
如果您使用 jQuery,您可以使用 data method 在 jQuery 对象中存储对地图的引用。例如:
var map = new ol.Map({
target: 'map',
//...
});
$('#map').data('map', map);
然后,从元素中获取对地图的引用:
var map = $('#map').data('map');
为清楚起见,这里是另一个示例,使用未命名的 'map' 的映射变量和映射 div 来演示 erilem 的答案。
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
Openlayers 3 中有没有办法获取附加到特定 html 元素的地图?
类似于:
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()
地图对象引用了 HTML 元素,但 HTML 元素没有引用地图对象。 HTML 元素根本不知道地图对象。
如果您使用 jQuery,您可以使用 data method 在 jQuery 对象中存储对地图的引用。例如:
var map = new ol.Map({
target: 'map',
//...
});
$('#map').data('map', map);
然后,从元素中获取对地图的引用:
var map = $('#map').data('map');
为清楚起见,这里是另一个示例,使用未命名的 'map' 的映射变量和映射 div 来演示 erilem 的答案。
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