You need to enable JavaScript to run this app. React Native Maps如何通过调用文件名设置自定义标记,替换路径静态值
优惠活动
大模型
产品
解决方案
定价
更多

React Native Maps如何通过调用文件名设置自定义标记,替换路径静态值

解决方案

方案1:预设图片映射表(原生React Native项目推荐写法)

React Native 中的 require 是打包阶段静态解析的,不支持直接传入运行时的变量拼接路径,你需要先把所有可能的pin值对应的图片提前引入建立映射,再通过listing.pin匹配对应资源:

// 提前定义所有pin值对应的图片映射,把所有可能用到的pin值都列在此处
const pinImageMap = {
  GREEN: require('../../../assets/pins/PINGREEN.png'),
  RED: require('../../../assets/pins/PINRED.png'),
  YELLOW: require('../../../assets/pins/PINYELLOW.png'),
}

const markerArr = data.map((listing, index) => (
    <Marker
      key={index}
      title={listing.title}
      image={pinImageMap[listing.pin]} // 直接通过pin值获取对应图片
      // description={listing.description}
      onCalloutPress={() => {
        onPressListingItem(listing);
      }}
      coordinate={{
        latitude: listing.latitude,
        longitude: listing.longitude,
      }}
    />
  ));

方案2:动态路径拼接(仅兼容web端React/特殊配置的React Native项目)

如果你的项目是web端React项目、或者做了支持动态资源加载的特殊配置,可以直接替换字符串拼接即可:

image={require('../../../assets/pins/PIN' + listing.pin + '.png')}

注意:原生未做特殊配置的React Native项目使用该写法会在打包阶段报错找不到资源,不推荐使用。

内容的提问来源于stack exchange,提问作者Arrakis_Surfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 23:06:08