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

如何通过Google Maps JS API自定义聚类实现标记改为紫色?

解决方案

1. 修改单个标记为紫色(匹配默认红色标记样式)

直接利用Google Maps Marker的icon属性,使用SVG矢量图标复刻默认红色标记的形状并替换为紫色。SVG是矢量格式,不会出现画质模糊或显示异常的问题。

修改标记创建代码:

marker = new google.maps.Marker({
    position: new google.maps.LatLng(locationObject.Latitude, locationObject.Longitude),
    map: map,
    title: hotelName,
    id: hotelid,
    // 紫色SVG图标,匹配默认红色标记的形状
    icon: {
        path: "M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z",
        fillColor: "#9370DB", // 可根据需求调整紫色色值
        fillOpacity: 1,
        strokeColor: "#000",
        strokeWeight: 2,
        scale: 1
    }
});

path参数对应默认红色标记的SVG路径,仅修改fillColor即可实现颜色替换,其他参数保持与默认标记一致。

2. 修改聚类标记为紫色(匹配单个标记样式)

在自定义renderer中,给聚类标记设置相同的紫色SVG图标,同时保留计数标签:

var renderer = {
    render: function (paramss) {
        return new google.maps.Marker({
            label: { text: String(paramss.count), color: "white", fontSize: "10px" },
            position: paramss.position,
            zIndex: Number(google.maps.Marker.MAX_ZINDEX) + paramss.count,
            // 聚类标记使用同款紫色图标,适当放大区分
            icon: {
                path: "M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z",
                fillColor: "#9370DB",
                fillOpacity: 1,
                strokeColor: "#000",
                strokeWeight: 2,
                scale: 1.5 // 放大聚类标记,与单个标记形成区分
            }
        });
    }
};

方案优势

  • 无需外部图片资源,完全依赖Google Maps内置SVG路径,避免画质问题
  • 样式与默认红色标记高度一致,仅替换颜色
  • 兼容当前使用的markerClusterer版本,无需更换组件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:21:47