我試圖顯示使用OpenLayers 3和SimpleModal plugin for jQuery的地圖。當我點擊我的鏈接時,模式會打開,但地圖不顯示。我錯過了什麼?OpenLayers 3沒有顯示在一個簡單的模式
我轉載我的JSBin問題,http://jsbin.com/hunexepeti/2/edit?html,js,output
這是HTML相關部分,
<a id="open-map" href="#">Open map</a>
<div id="map"></div>
,這是我的JS,
function initMap(lat, lon) {
var container = document.getElementById('map');
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.Stamen({
layer: 'toner'
})
})
],
renderer: 'canvas',
target: container,
view: new ol.View({
center: [lat, lon],
zoom: 2
})
});
}
$(document).on('click', 'a#open-map', function(e) {
e.preventDefault();
var pos = {
lat: 0,
lon: 0
};
$("#map").modal({
onOpen: function (dialog) {
dialog.overlay.fadeIn('fast', function() {
dialog.data.hide();
dialog.container.fadeIn('fast', function() {
dialog.data.slideDown('fast');
});
});
initMap(pos.lat, pos.lon);
},
onClose: function (dialog) {
dialog.data.fadeOut('fast', function() {
dialog.container.hide('fast', function() {
dialog.overlay.slideUp('fast', function() {
$.modal.close();
});
});
});
},
overlayClose: true
});
});
編輯:這是固定的,感謝@ekuusela的回答。不過,我有幾個位置鏈接,所以我需要在模態中打開不同的位置。
- 我是否應該重複使用相同的地圖並更改其視圖?
- 或者我可以創建一個新的視圖,因爲舊的覆蓋?我很好奇表現。
這樣的傻瓜x)非常感謝。 – whitenoisedb
如果我需要將不同的地圖位置打開爲模式,我是否應該重複使用相同的地圖並更改其視圖?還是應該用新的View創建一個新的? – whitenoisedb
兩種方式都可以。如果您每次創建一個新地圖,請務必在舊地圖上調用'map.setTarget(null)'來釋放資源。 – tsauerwein