Я следую за Книгой * Leaflet о том, как загружать шейп-файлы. Инструкции книги:
Сначала добавьте ссылки на два JavaScript файла. Первый, leaflet-shpfile, является плагином, а второй зависит от парсера shapefile, shp. js:
<script src="leaflet.shpfile.js">
</script><script src="shp.js"></script>
Затем создайте новый слой shapefile и добавьте это к карте. Передайте путь слоя в сжатый шейп-файл:
var shpfile = new L.Shapefile('council.zip');
shpfile.addTo(map);
Я следовал приведенным выше инструкциям с небольшими изменениями, так как я нахожусь в Webpack. Вот что я сделал:
- установлен
shpjs
с npm i shpjs --S
- скачан
leaflet.shpfile.js
с github и помещен в src/
- в моем файле
*.js
мне требуются shpjs
и leaflet.shpfile.js
со следующим кодом:
const shp=require('shpjs');
require('./leaflet.shpfile.js');
Затем я получаю доступ к шейп-файлу в соответствии с инструкциями:
console.log(shp);
const shapeFileLayer = L.shapefile(someURL);
В последней строке кода я получаю следующую трассировку:
react-dom.production.min.js:196 ReferenceError: shp is not defined
at NewClass.addFileData (leaflet.shpfile.js:38)
at NewClass.initialize (leaflet.shpfile.js:25)
at new NewClass (leaflet-src.js:300)
at Object.L.shapefile (leaflet.shpfile.js:67)
at Map.createLayerGroups (main.js_+_3_modules:342)
at Map.componentDidMount (main.js_+_3_modules:186)
at ik (react-dom.production.min.js:251)
at exports.unstable_runWithPriority (scheduler.production.min.js:18)
at fg (react-dom.production.min.js:120)
at Yj (react-dom.production.min.js:244)
Оператор console.log
в строке, приведенной выше, завершается успешно, показывая, что определенная функция shp
определена. Поэтому я не могу объяснить, почему я получаю справочную ошибку shp is not defined
в строке, следующей за следующей.