React Leaflet-标记图像无法加载

安森

问题

在我的React项目中使用传单v1.7.1react-leaflet v3.0.5

当我在React Router的“设置”文档页面中尝试设置示例时,标记图标会变成损坏的图像,如下图红色圆圈所示:

标记损坏的图像

在React Router的文档中,标记应如下所示:

正确的标记

经检查,保存标记图像的标记src属性<img>应为https://unpkg.com/[email protected]/dist/images/marker-icon-2x.png但是,经检查后,我<img>src属性显示为乱码:

乱码

复写

I suspect that I did something wrong when I tried to set-up Leaflet and React Leaflet via npm.

Here's my Code Sandbox link

Alternatively, follow these steps to replicate the issue:

  1. npx create-react-app leaflet-test

  2. cd leaflet-test/

  3. npm i leaflet react-leaflet

  4. Open the project in code editor. Go to App.js and use the following code:

    import React from "react";
    import "./App.css";
    import "leaflet/dist/leaflet.css";
    import { MapContainer, TileLayer, Marker, Popup } from "react-leaflet";
    
    const styles = {
      mapRoot: {
        height: 400,
      },
    };
    
    export default function App() {
      return (
        <MapContainer
          style={styles.mapRoot}
          center={[51.505, -0.09]}
          zoom={13}
          scrollWheelZoom={false}
        >
          <TileLayer
            attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
          />
          <Marker position={[51.505, -0.09]}>
            <Popup>
              A pretty CSS3 popup. <br /> Easily customizable.
            </Popup>
          </Marker>
        </MapContainer>
      );
    }
    
  5. npm start

I'm not sure whether I've set-up Leaflet wrongly in React or it's a bug from Leaflet or React Leaflet. Thanks in advance!

ghybs

For reference, this is due to webpack rewriting URL's in CSS, whereas Leaflet uses it to detect the paths to its icon images.

See the details in Leaflet issue #4968.

When using Leaflet through a CDN, the Leaflet CSS is not fiddled with, so it works correctly.

您仍然可以通过webpack使用它,但是您应该只使用自定义图标,或者显式告诉Leaflet在哪里可以找到其默认图标的图像:

import L from 'leaflet';
delete L.Icon.Default.prototype._getIconUrl;

L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

我还专门为这种情况制作了一个插件:leaflet-defaulticon-compatibility

从CSS检索所有Leaflet Default Icon选项,尤其是所有图标图像URL的选项,以提高与在CSS中修改URL的捆绑器和框架的兼容性。

import 'leaflet/dist/leaflet.css';
import 'leaflet-defaulticon-compatibility/dist/leaflet-defaulticon-compatibility.webpack.css'; // Re-uses images from ~leaflet package
import * as L from 'leaflet';
import 'leaflet-defaulticon-compatibility';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结合React和Leaflet的好方法

来自分类Dev

React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

来自分类Dev

无法将标记添加到Angular Leaflet指令

来自分类Dev

如何在react-leaflet中动态移动和旋转标记?

来自分类Dev

R Leaflet标记弹出窗口中的图像

来自分类Dev

无法在React-Leaflet中获得自定义缩放按钮

来自分类Dev

React-leaflet如何重置样式

来自分类Dev

使用React Typescript在react-leaflet-markerclusterer中显示所有群集标记

来自分类Dev

单击标记时不显示react-leaflet Popup

来自分类Dev

结合react-leaflet和leaflet-pixi-overlay

来自分类Dev

React-leaflet:如何更新标记位置?

来自分类Dev

使用react-leaflet渲染TopoJSON

来自分类Dev

React Leaflet-如何使用圆形标记渲染自定义图像

来自分类Dev

React Leaflet按键警告

来自分类Dev

在react-leaflet上通过useRef数组移动一些标记

来自分类Dev

React Leaflet:动态标记,无法读取属性“ addLayer”

来自分类Dev

React Leaflet:无法加载源地图

来自分类Dev

react-leaflet在标记旁边添加标签/弹出窗口

来自分类Dev

(React&Mobx&Leaflet)等待,然后无法按我预期的那样工作

来自分类Dev

React-leaflet:默认标记在缩放时移动

来自分类Dev

单击React Leaflet v.3.x中的标记时,如何动态更改地图缩放?

来自分类Dev

React Leaflet-标记图像无法加载

来自分类Dev

React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

来自分类Dev

使用React Typescript在react-leaflet-markerclusterer中显示所有群集标记

来自分类Dev

标记setDraggable可用于Leaflet?

来自分类Dev

防止使用Leaflet.js在图像外添加标记

来自分类Dev

无法在React-Leaflet中获得自定义缩放按钮

来自分类Dev

[React Native]图像无法在Android中加载

来自分类Dev

React-Leaflet-将绘图列表映射到标记

Related 相关文章

  1. 1

    结合React和Leaflet的好方法

  2. 2

    React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

  3. 3

    无法将标记添加到Angular Leaflet指令

  4. 4

    如何在react-leaflet中动态移动和旋转标记?

  5. 5

    R Leaflet标记弹出窗口中的图像

  6. 6

    无法在React-Leaflet中获得自定义缩放按钮

  7. 7

    React-leaflet如何重置样式

  8. 8

    使用React Typescript在react-leaflet-markerclusterer中显示所有群集标记

  9. 9

    单击标记时不显示react-leaflet Popup

  10. 10

    结合react-leaflet和leaflet-pixi-overlay

  11. 11

    React-leaflet:如何更新标记位置?

  12. 12

    使用react-leaflet渲染TopoJSON

  13. 13

    React Leaflet-如何使用圆形标记渲染自定义图像

  14. 14

    React Leaflet按键警告

  15. 15

    在react-leaflet上通过useRef数组移动一些标记

  16. 16

    React Leaflet:动态标记,无法读取属性“ addLayer”

  17. 17

    React Leaflet:无法加载源地图

  18. 18

    react-leaflet在标记旁边添加标签/弹出窗口

  19. 19

    (React&Mobx&Leaflet)等待,然后无法按我预期的那样工作

  20. 20

    React-leaflet:默认标记在缩放时移动

  21. 21

    单击React Leaflet v.3.x中的标记时,如何动态更改地图缩放?

  22. 22

    React Leaflet-标记图像无法加载

  23. 23

    React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

  24. 24

    使用React Typescript在react-leaflet-markerclusterer中显示所有群集标记

  25. 25

    标记setDraggable可用于Leaflet?

  26. 26

    防止使用Leaflet.js在图像外添加标记

  27. 27

    无法在React-Leaflet中获得自定义缩放按钮

  28. 28

    [React Native]图像无法在Android中加载

  29. 29

    React-Leaflet-将绘图列表映射到标记

热门标签

归档