2015-04-28 2 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, вы можете сохранить ссылку на карту в объекте jQuery, используя data method. Например:

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

, а затем, чтобы получить ссылку на карту от элемента:

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

Для ясности, вот ответ другого примера, демонстрирующего erilem с отображением вар и карты 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

Смежные вопросы