Редкий эффект при переключении BaseLayer в листовке с реакционной листовкой - PullRequest
0 голосов
/ 30 сентября 2018

Мое приложение показывает карту с react-leaflet и использует LayersControl для переключения между OSM TileLayer и HERE TileLayer.Код выглядит следующим образом:

 <LayersControl position="topright">

      <LayersControl.BaseLayer
                    name={this.props.intl.formatMessage({id:'map.normal_map'})}
                    checked={true}
                >
                    { tileLayerOSM }
                </LayersControl.BaseLayer>
                <LayersControl.BaseLayer name={this.props.intl.formatMessage({id:'map.terrain_map'})}>
                  { tileLayerHERE }
                </LayersControl.BaseLayer>
</LayersControl>

Проблема, с которой я сталкиваюсь, заключается в следующем: при перемещении карты OSM некоторые «квадраты» загружаются из HERE, пока они не готовы с OSM.Смотрите трассировку сети:

enter image description here

Я бы хотел избежать такого поведения, так как это немного раздражает пользователя, который видит изменения в визуализациина короткий промежуток времени.

1 Ответ

0 голосов
/ 01 октября 2018

У меня нет опыта использования Leaflet с React, но это явно не желаемое поведение.

В Leaflet это (извлечение обоих базовых слоев одновременно) происходит, когда вы добавляете оба ккарта.Что-то вроде:

const accessToken = 'foo';
let osm = L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
const mapbox = 'https://api.mapbox.com/styles/v1/mapbox/basic-9/tiles/256/{z}/{x}/{y}?access_token={accessToken}';

const map = L.map('map').setView([42.2, -8.8], 12);

map.addLayer(osm);
map.addLayer(mapbox); // only one should be added to the map

или непосредственно при создании экземпляра карты:

let map = L.map('map', {
        center: [42.2, -8.8],
        zoom: 12,
        layers: [osm, mapbox] // only one should be added to the map
    });

С такими базовыми слоями вы должны добавить только один на карту и использовать элемент управления слоя для переключения междуили другой.Когда добавляется только одна, запрашиваются только плитки для одной из карт, сохраняя полосу пропускания.

В качестве «выстрела в темноте» я постараюсь сделать проверенное значение явным для всех слоев.Во-первых, оба - как ложно закодированные, на карте ничего не должно быть.Затем один с checked=true зашифрованным, другой с ложным, и так далееВозможно, проблема в том, как эти атрибуты управляются.

...