Leaflet переписывает теги src своих маркеров в DOM во время выполнения, и это ломается, когда вы используете Angular и AOT-компиляцию (которая включена в режиме prod).
Вы похожи, что могли быиспользовать ngx-листовку.Если это так, прочитайте этот раздел README для получения дополнительной информации о том, как заставить маркеры Leaflet работать в Angular.
TL; DR - это то, что вам нужно, чтобы ваши маркеры использовали пользовательские значки, которыеэталонные изображения, обрабатываемые конвейером сборки (например, Webpack или Angular CLI).
Сначала скажите Angular CLI скопировать значки Leaflet в каталог ./dist
.В angular.json:
{
...
"assets": [
"assets",
"favicon.ico",
{
"glob": "**/*",
"input": "./node_modules/leaflet/dist/images",
"output": "assets/"
}
],
...
}
Затем, когда вы создаете маркеры, ссылайтесь на эти значки в вашем коде:
let layer = marker([ 46.879966, -121.726909 ], {
icon: icon({
iconSize: [ 25, 41 ],
iconAnchor: [ 13, 41 ],
iconUrl: 'assets/marker-icon.png',
shadowUrl: 'assets/marker-shadow.png'
})
});
Это будет гарантировать, что Angular CLI скопирует все содержимое в node_modules/leaflet/dist/images
каталог ./dist/assets
, где вы можете ссылаться на них в маркерах своих клиентов.