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

如何使用指定图片自定义React-google-map组件的Marker样式

解决React-Google-Maps自定义Marker图片尺寸的问题

嘿,我之前也踩过这个坑!你代码里的问题在于直接用数字设置size是无效的——React-Google-Maps底层依赖的Google Maps JavaScript API,要求图标尺寸必须用google.maps.Size对象来定义,而不是简单的数值。

试试下面的修改方案:

正确的自定义Marker配置

首先确保你的项目已经正确加载了Google Maps JS API(这样全局的google对象才能访问到),然后调整你的图标配置:

// 定义自定义图标配置
const customMarkerIcon = {
  url: '../images/icons/yellow.png',
  // 图片的原始像素尺寸(根据你实际的图片大小填写,比如你的图片是50x50像素)
  size: new google.maps.Size(50, 50),
  // 你想要显示的实际缩放尺寸
  scaledSize: new google.maps.Size(10, 10),
  // 可选:设置图标锚点,让标记的位置对应图片的中心点(这里是5,5,对应10x10的中心)
  anchor: new google.maps.Point(5, 5)
};

// 在组件中使用
return (
  <Marker
    position={location}
    icon={customMarkerIcon}
    onClick={this.handleMarkerClick.bind(this, marker)}
  />
);

关键说明

  • size:对应你自定义图片的原始像素尺寸,必须用google.maps.Size(width, height)来创建实例。
  • scaledSize:这是控制Marker最终显示大小的核心属性,同样需要用google.maps.Size定义,它会把原始图片缩放到目标尺寸显示。
  • anchor:可选属性,用来修正标记的位置偏移(比如让图片的中心点精准对应地图上的坐标点)。

如果你的自定义图片本身就是10x10像素,那size和scaledSize可以设成一样的,但还是要通过google.maps.Size来定义,不能直接写数字哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:41:49