【问题标题】:How to use require to import a custom icon with react leaflet?如何使用要求导入带有反应传单的自定义图标?
【发布时间】:2020-10-22 21:17:20
【问题描述】:

我在 stackoverflow 上阅读了几篇文章,例如 React Leaflet - How to render custom image using Circle Markerscustom marker icon with react-leaflet 关于如何在反应传单地图中包含自定义图标。我试过下面的代码

const newicon = new L.icon({
      iconUrl: require('../assets/Download-Image.png'),
      iconSize: [30, 30]  
    })

但图像不会在地图上呈现。

但是,如果我使用与下面相同的图标的 url,它可以工作并呈现。关于我可能做错的任何建议?

const newicon = new L.icon({
      iconUrl: 'https://www.somewebsite/Download-Image.png',
      iconSize: [30, 30]  
    })

【问题讨论】:

    标签: javascript reactjs leaflet react-leaflet react-leaflet-draw


    【解决方案1】:

    你不应该把require放在''之间:只需要里面的图片路径。

    const newicon = new L.icon({
      iconUrl: require("./assets/marker.png"),
      iconSize: [30, 30]
    });
    
    export default function App() {
      const position = [51.505, -0.09];
    
      return (
        <Map center={position} zoom={13} style={{ height: "500px" }}>
          <TileLayer
            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
            attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          />
          <Marker position={position} icon={newicon}>
            <Popup>
              A pretty CSS3 popup.
              <br />
              Easily customizable.
            </Popup>
          </Marker>
        </Map>
      );
    }
    

    另一种最常用的方法是导入如下图像:

    import marker from "./assets/marker.png";
    

    然后像这样使用它:

    const newicon = new L.icon({
      iconUrl: marker,
      iconSize: [30, 30]
    });
    

    Demo

    【讨论】:

    • 感谢@Kboul,但引号之间的require 是我帖子的错字,我已修复。无论如何,我之前尝试过您的建议,但仍然无法在地图中渲染图像。我只是得到没有图像可用的图标。不确定是否是我拥有的包裹的问题。
    • 你试过第二种方法了吗?
    • 如果您能够为您的应用提供演示,我可以提供帮助。
    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多