OpenLayers 5: несколько окон просмотра карты, когда несколько карт определены с одной целью - PullRequest
0 голосов
/ 21 ноября 2018

OpenLayers 5.3

Обновление: пожалуйста, смотрите мой ответ ниже.Я думаю, что это вопрос красной селедки, не связанный с OpenLayers

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

Неожиданно внутри div 'map' область просмотра была продублирована и появилась вторая карта, хотя я не импортировал вторую карту в мои index.js:

карты.js

import {Map} from 'ol';

export var map0 = new Map({
  layers: some_layers,
  view: some_view,
  target: 'map'
});

export var map1 = new Map({
  layers: other_layers,
  view: someother_view,
  target: 'map'
});

index.js

import {map0 as map} from maps;
// note that map1 is NOT imported

Ожидаемое поведение: Поскольку я импортировал только одну карту в индекс.js, я ожидал, что у меня будет только один видовой экран карты в

<div id='map'>

и что map1, будучи НЕ импортированным, НЕ будет включен.

Фактическое поведение: Внутри div карты было два видовых экрана, один из которых содержал map0, а другой - map1.

Обходное решение В maps.js пропустите параметр target, а затемв index.js:

map.setTarget('map')

Это ошибка или ожидаемое поведение, или это отражает недостаток понимания с моей стороны поведения экспорта и импорта?

1 Ответ

0 голосов
/ 21 ноября 2018

Я полагаю, что это вовсе не проблема OpenLayers.

Более того, я считаю, что мой вопрос даже не затрагивал основную проблему.

Я думаю, что это связано с веб-пакетомвопрос.

Я думаю, что мне нужно лучше понять концепцию TreeShaking и использовать параметр sideEffects в webpack.config.

Хотя я еще не пробовал это, я думаю, что обучение изприведенная ниже ссылка должна помочь мне решить проблему:

https://webpack.js.org/guides/tree-shaking/

Цитата из приведенного выше непосредственно связана с моим первоначальным вопросом:

Обратите внимание, что мыне импортировал метод square из модуля src / math.js.Эта функция называется «мертвым кодом», что означает неиспользуемый экспорт, который следует отбросить.

Таким образом, даже если экспорт «не используется», он все равно попадает в пакет веб-пакета, следовательно,в данном случае это добавило вторую карту к тому же div, что и опытный.

Я обновлю этот ответ подтверждением, когда / если я достигну этого.

Извините за ложную тревогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...