我有我的组件MAP,并且我使用传单(而不是react-leaflet)。 我要设置一个标记。
这是我组件的代码。
import React from 'react';
import L from 'leaflet';
import '../../../../node_modules/leaflet/dist/leaflet.css';
import './map.scss';
export default class Map extends React.Component {
componentDidMount() {
this.map = L.map('map', {
center: [48.8762, 2.357909999999947],
zoom: 14,
zoomControl: true,
layers: [
L.tileLayer('https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png',{
detectRetina: true,
maxZoom: 20,
maxNativeZoom: 17,
}),
]
});
L.marker([48.8762, 2.357909999999947],
{
draggable: true, // Make the icon dragable
title: 'Hover Text', // Add a title
opacity: 0.5} // Adjust the opacity
)
.addTo(this.map)
.bindPopup("<b>Paris</b><br>Gare de l'Est")
.openPopup();
L.circle([48.8762, 2.357909999999947], {
color: 'red',
fillColor: '#f03',
fillOpacity: 0.5,
radius: 500
}).addTo(this.map);
};
render() {
return <div className="map" id="map" />
}
}
我添加了文档中描述的标记,但是地图中的结果不是默认图标,它只是带有细边框的正方形。 我检查了传单的css文件。该图标在images文件夹中,但在地图中不可用。
任何人都可以帮忙或者看看我的代码有什么问题吗?
答案 0 :(得分:2)
这是webpack的CSS捆绑包问题。将markerIcon定义为
public File generateDefaultJavaFile(CustomPlugin plugin) throws IOException{
File main = plugin.getMain();
BufferedWriter writer = new BufferedWriter(new FileWriter(main));
writer.write("");
}
像这样将其分配给const markerIcon = L.icon({
iconSize: [25, 41],
iconAnchor: [10, 41],
popupAnchor: [2, -40],
// specify the path here
iconUrl: "https://unpkg.com/leaflet@1.5.1/dist/images/marker-icon.png",
shadowUrl: "https://unpkg.com/leaflet@1.5.1/dist/images/marker-shadow.png"
});
的icon属性:
L.marker
答案 1 :(得分:0)
根据您的问题,我可以解释为您无法正确导入CSS。
您可以通过编写导入传单模块的css
import 'leaflet/dist/leaflet.css';
有关详细说明,您可以阅读
Do I have to import leaflet's CSS file?
Example of how to load static CSS files from node_modules using webpack?