У меня есть пользовательские значки, работающие на моей карте Leaflet, когда я запускаю gatsby develop
локально, но когда я пытаюсь создать, я получаю сообщение об ошибке, связанное с моим пользовательским значком маркера:
WebpackError: TypeError: leaflet_src_layer_marker__WEBPACK_IMPORTED_MODULE// Init custom map icon
const mapIcon = MapIcon();
const markerIcon = new Icon({
iconUrl: mapIcon,
iconSize: [36, 36],
iconAnchor: [18, 18],
shadowSize: [36, 36],
shadowUrl: 'https://unpkg.com/[email protected]/dist/images/marker-shadow.png',
shadowAnchor: [10, 18],
popupAnchor: [0, -16],
tooltipAnchor: [13, -4]
});
_.Icon is not a constructor
Связанный импорт:
import { Map, Marker, Popup, TileLayer, Tooltip, ZoomControl } from 'react-leaflet'
import { Icon } from 'leaflet/src/layer/marker'
Создать собственный значок:
// Init custom map icon
const mapIcon = MapIcon();
const markerIcon = new Icon({
iconUrl: mapIcon,
iconSize: [36, 36],
iconAnchor: [18, 18],
shadowSize: [36, 36],
shadowUrl: 'https://unpkg.com/[email protected]/dist/images/marker-shadow.png',
shadowAnchor: [10, 18],
popupAnchor: [0, -16],
tooltipAnchor: [13, -4]
});
JSX:
{ markerData.length > 0 ? markerData.map((node, index) => (
<Marker position={[node.coords.lat, node.coords.lng]} key={`marker-${index}`} icon={markerIcon}>
<Popup className="leaflet-popup" onOpen={(el) => openPopup(el)}>
<h5 className="popup-location-title">{node.location_title}</h5>
<h6 className="popup-address">{node.address}</h6>
<div className="popup-description" dangerouslySetInnerHTML={{ __html: node.description }}></div>
{!!node.embed ?
<div className="popup-embed">
<Embed url={node.embed} className="popup-media-embed" />
</div>
: null}
</Popup>
<Tooltip className="leaflet-tooltip">
<span className="title">{node.location_title}</span>
<span className="address">{node.address}</span>
</Tooltip>
</Marker>
)) : null }
Я пробовал все решения, перечисленные здесь: https://github.com/Leaflet/Leaflet.markercluster/issues/874. Я также рассмотрел несколько похожих вопросов. Кажется, ничего не помогает. Например, я также пробовал импортировать такие листовки import * as L from "leaflet"
и такие import L from "leaflet"
. И затем создаем новый значок, например, const markerIcon = L.Icon({
, вот так const markerIcon = L.icon({
, вот так const markerIcon = new L.Icon({
и так const markerIcon = new L.icon({
. Я могу console.log(L)
, но ничего из этого не работает.
Я хотел бы получить некоторую помощь.