要解决“Angular 10 - Leaflet - Webpack破坏URL到marker-icon.png”的问题,您可以尝试以下解决方法:
在您的Angular项目的根目录下创建一个名为assets
的文件夹,并在其中创建一个名为images
的文件夹。将marker-icon.png
文件复制到images
文件夹中。
在angular.json
文件中,找到assets
数组并将以下代码段添加到其中:
{
"glob": "**/*",
"input": "src/assets/images",
"output": "/assets/images/"
}
这将确保marker-icon.png
文件被正确地复制到构建输出文件夹中。
L
对象并使用icon
方法创建一个自定义图标:import { Component, OnInit } from '@angular/core';
import * as L from 'leaflet';
@Component({
selector: 'app-map',
templateUrl: './map.component.html',
styleUrls: ['./map.component.css']
})
export class MapComponent implements OnInit {
ngOnInit(): void {
const customIcon = L.icon({
iconUrl: 'assets/images/marker-icon.png',
iconSize: [25, 41],
iconAnchor: [13, 41],
popupAnchor: [0, -41]
});
const map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);
L.marker([51.5, -0.09], { icon: customIcon }).addTo(map);
}
}
这个示例代码创建了一个自定义图标,并将其应用于地图上的标记。图标的URL设置为assets/images/marker-icon.png
,这将确保正确加载图标。
通过执行以上步骤,您应该能够在Angular项目中正确地加载marker-icon.png
图标。