OpenLayers 5–6: слои не отображаются
Мы пытаемся преобразовать нашу карту OL5 в карту OL6. Когда мы используем OL6, карта вообще не отображается, а в DevTools, если мы устанавливаем высоту для div карты, инструменты масштабирования и логотип отображаются нормально, но слоев нет. Мы заменили карту картой быстрого старта, и она не работает в 6, 5 отлично. Проверка нашего объекта карты не обнаруживает проблем и соответствует ожиданиям.
У кого-нибудь еще есть какие-либо проблемы, или они решили эту проблему, или могут помочь? Спасибо!
Объявление HTML:
<div id="ephem-map" class="map-medium"></div>
Controller.js:
vm.map = MapFactory.getMapInstance({
id: 'ephem-map',
zoomLevel: 2
});
MapFactory:
(function () {
'use strict';
/* global ol, angular */
angular.module('common').factory('MapFactory', MapFactory);
MapFactory.$inject = [];
function MapFactory() {
var factory = {
getMapInstance: getMapInstance
};
return factory;
function getMapInstance(options) {
return new _MapConstructor(options);
}
function _MapConstructor(options) {
/**
* Guarantee "new" instance
*/
if (!(this instanceof _MapConstructor)) {
return new _MapConstructor(options);
}
options = options || {};
var _id = options.id || 'map';
var _zoomLevel = options.zoomLevel || 2;
var _resultsOptions = options.results || {};
var _wrapX = options.wrapX || false;
var _infoTag = options.infoTag || 'info';
// The actual ol.Map object that manipulates the DOM
var _map = undefined;
// Run on construction
_initialize();
// The working MapInstance object
var mapinstance = {};
return mapinstance;
function setTarget(target) {
_map.setTarget(target);
}
/**
* Private Methods to _MapInstance
*/
function _initialize() {
_map = new ol.Map({
target: _id,
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4
})
});
}
}
}
})();
1 ответ
Решил эту проблему, установив заданную высоту в контейнерах карты. Кажется, он больше не отображает только минимальную / максимальную высоту, установленную в css.