You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中Android端MapView.Marker子组件FastImage无法显示问题

自定义Marker中react-native-fast-image Android端不显示修复方案
  • 首先排查网络权限配置:Android 9及以上系统默认禁止http协议的网络请求,如果你加载的是http开头的图片,需要在android/app/src/main/AndroidManifest.xml的<application>节点添加android:usesCleartextTraffic="true"属性,iOS默认无http限制所以不会触发该问题。
  • 验证FastImage Android端初始化完整性:确认你已在android/app/build.gradle中正确引入FastImage依赖,且主Application类中完成了Fresco初始化。如果是RN 0.60+版本,确认执行过Gradle同步操作,没有出现依赖冲突或Fresco so库加载失败的报错。
  • 适配Marker的Android端渲染逻辑:Android端地图Marker的自定义View渲染和iOS存在原生层级差异,直接嵌套FastImage作为Marker子组件大概率会出现渲染失效,建议将图片资源处理后直接传入Marker的icon属性,而非嵌套自定义View:
// 不兼容Android的写法
<Marker coordinate={targetCoord}>
  <FastImage 
    source={{uri: '你的图片地址'}} 
    style={{width: 48, height: 48}} 
    resizeMode={FastImage.resizeMode.contain}
  />
</Marker>

// 双端兼容写法
const [markerIcon, setMarkerIcon] = useState(null)

useEffect(() => {
  // 预加载图片后转为Marker可用的icon资源
  FastImage.preload([{uri: imageUrl}])
  // 若使用react-native-maps,可直接传入处理后的图片资源给icon属性
  setMarkerIcon({uri: imageUrl, width: 48, height: 48})
}, [imageUrl])

<Marker 
  coordinate={targetCoord}
  icon={markerIcon}
/>
  • 检查图片尺寸限制:Android端地图Marker的渲染资源有尺寸上限,若FastImage设置的宽高超过200px,可能被系统裁剪或直接不渲染,建议将Marker关联的图片尺寸控制在200px以内。
  • 确认版本兼容性:如果你使用的是react-native-fast-image v8.x以上版本,需要配合RN 0.60+的自动链接逻辑,低版本FastImage在Android 12+设备上存在已知的渲染异常,可尝试升级到最新稳定版修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:04