Openlayers 6.3.1 ajax белая страница - PullRequest
0 голосов
/ 18 апреля 2020

Когда я загружаю открытые слои 5 или 6 по ajax (

$.ajax('/url/', function(data){
$('.content').html(data);
});

) html + js, тогда область карты пуста.

Если я отлаживаю по ajax, тогда ol -отключаемый элемент div скрыт

когда я нажимаю кнопку F12, появляется сообщение

все javascript запущено

пример:

    $.import('/library/openlayers-6/ol.js', {}, '?ver=1');
    $.import('/library/openlayers-6/ol.css', {}, '?ver=1');
    $.import('/library/geocoder/geocoder.css');
    $.import('/library/geocoder/geocoder.js');

    var map, View, view, ol_easeIn, ol_easeOut, Tile, tileLayer, ol_fromLonLat, ol_toLonLat, OSM, Interaction;

    map = ol.Map;        //~ import map from 'ol/map.js';
    Interaction = ol.interaction;        //~ import map from 'ol/map.js';
    View = ol.View;       //~ import View from 'ol/View.js';
    var {easeIn, easeOut} = ol.easing;     //~ import {easeIn, easeOut} from 'ol/easing.js';
    Tile = ol.layer.Tile; //~ import TileLayer from 'ol/layer/Tile.js';
    var {fromLonLat, toLonLat} = ol.proj;       //~ import {fromLonLat} from 'ol/proj.js';
    OSM = ol.source.OSM; //~ import OSM from 'ol/source/OSM.js';
    positions = new ol.geom.LineString([], /** @type {ol.geom.GeometryLayout} */ ('XYZM'));

    Overlay = ol.Overlay;
    ol_easeIn = easeIn;
    ol_easeOut = easeOut;
    ol_fromLonLat = fromLonLat;
    ol_toLonLat = toLonLat;

    var projection = new ol.proj.get("EPSG:900913");

    view = new View({
        center: ol_fromLonLat([android.long, android.lat]),
        zoom: 17,
        maxZoom: 21,
        projection: projection
    });

    tileLayer = new Tile({
        title: "Map",
        source: new ol.source.OSM()
    });

    map = new map({
        target: 'map',
        interactions: Interaction.defaults().extend([
            new Interaction.DragRotateAndZoom()
        ]),
        controls: ol.control.defaults({
            attribution: false,
            zoom: false,
        }),
        layers: [
            tileLayer
        ],
        view: view
    });

что не так с этим? NB! Я не хочу загружать за пределами ajax

1 Ответ

0 голосов
/ 19 апреля 2020

Я нашел решение. Добавить код

setTimeout(function(){

        map.updateSize();
        map.render();
    }, 100);
...