如何更改Google地图标记的颜色?

时间:2010-03-18 19:57:42

标签: google-maps google-maps-api-2

我正在使用Google Maps API构建一个充满标记的地图,但我想要一个标记与其他标记脱颖而出。我认为最简单的做法是将标记的颜色改为蓝色,而不是红色。这是一件简单的事情,还是我必须以某种方式创建一个全新的图标?如果我必须创建一个新图标,最简单的方法是什么?

8 个答案:

答案 0 :(得分:119)

使用Google Maps API的第3版,最简单的方法可能是抓住自定义图标集,就像Benjamin Keen在这里创建的图标集一样:

http://www.benjaminkeen.com/?p=105

如果您将所有这些图标放在与地图页面相同的位置,则可以在创建标记时使用相应的图标选项为标记着色:

var beachMarker = new google.maps.Marker({
  position: myLatLng,
  map: map,
  icon: 'brown_markerA.png'
});

这非常容易,而且我正在使用的方法用于我目前正在进行的项目。

答案 1 :(得分:49)

MapIconMaker:Google Maps v2的库

一种方法是使用MapIconMaker。有一个例子here。 Google地图默认图标的宽度为20px,高度为34px,因此您可以使用以下内容进行模拟:

var newIcon = MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: "#0000FF", cornercolor:"#0000FF"});
var marker = new GMarker(map.getCenter(), {icon: newIcon});

你甚至可以将它包装在一些功能中,以使自己更容易:

function getIcon(color) {
    return MapIconMaker.createMarkerIcon({width: 20, height: 34, primaryColor: color, cornercolor:color});
}

这就是我个人用于我创建的所有标记的内容。我更喜欢选择改变一时兴趣的颜色。

更新:默认图标的十六进制颜色为“#FE7569”。此外,您可以在Marker上设置setImage,而不是使用新图标创建新Marker。因此,如果你想要一个突出显示的功能,你可以使用上面的函数:

function highlightMarker(marker, highlight) {
    var color = "#FE7569";
    if (highlight) {
        color = "#0000FF";
    }
    marker.setImage(getIcon(color).image);
}

StyledMarker:Google Maps v3的库

由于V2在前一段时间被V3取代,我想我应该更新这个答案。我为自定义标记创建了一个库,可以在V3实用程序库here中找到。它允许不同的颜色和形状,您也可以在标记上放置文本。它的工作原理是使用Google Charts API,该API具有创建Google Maps类型标记的方法。如果您想直接使用Google Charts API,请随时查看源代码。

然而,关于该库的事情是,它负责为您定义这些标记图像的可点击区域,因此,例如,带有文本的较长气泡将具有可预期的可点击区域,如{{3 }}

答案 2 :(得分:45)

由于不推荐使用地图v2,您可能对v3地图感兴趣:https://developers.google.com/maps/documentation/javascript/markers#simple_icons

对于v2地图:

http://code.google.com/apis/maps/documentation/overlays.html#Icons_overview

您可以使用一组逻辑执行所有“常规”引脚,使用新标记执行另一个“特殊”引脚。

答案 3 :(得分:31)

enter image description here enter image description here 材料设计

2019年3月编辑现在使用程序化引脚颜色,

纯粹的JAVASCRIPT,没有图片,支持标签

不再依赖于已弃用的Charts API

    var pinColor = "#FFFFFF";
    var pinLabel = "A";

    // Pick your pin (hole or no hole)
    var pinSVGHole = "M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z";
    var labelOriginHole = new google.maps.Point(12,15);
    var pinSVGFilled = "M 12,2 C 8.1340068,2 5,5.1340068 5,9 c 0,5.25 7,13 7,13 0,0 7,-7.75 7,-13 0,-3.8659932 -3.134007,-7 -7,-7 z";
    var labelOriginFilled =  new google.maps.Point(12,9);


    var markerImage = {  // https://developers.google.com/maps/documentation/javascript/reference/marker#MarkerLabel
        path: pinSVGFilled,
        anchor: new google.maps.Point(12,17),
        fillOpacity: 1,
        fillColor: pinColor,
        strokeWeight: 2,
        strokeColor: "white",
        scale: 2,
        labelOrigin: labelOriginFilled
    };
    var label = {
        text: pinLabel,
        color: "white",
        fontSize: "12px",
    }; // https://developers.google.com/maps/documentation/javascript/reference/marker#Symbol
    this.marker        = new google.maps.Marker({
        map: map.MapObject,
        //OPTIONAL: label: label,
        position: this.geographicCoordinates,
        icon: markerImage,
        //OPTIONAL: animation: google.maps.Animation.DROP,
    });

答案 4 :(得分:23)

就个人而言,我认为Google Charts API生成的图标看起来很棒,并且易于动态自定义。

请参阅Google Maps API 3 - Custom marker color for default (dot) marker

上的答案

答案 5 :(得分:11)

我发现最简单的方法是使用BitmapDescriptorFactory.defaultMarker()documentation甚至有一个设置颜色的例子。从我自己的代码:

MarkerOptions marker = new MarkerOptions()
            .title(formatInfo(data))
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
            .position(new LatLng(data.getLatitude(), data.getLongitude()))

答案 6 :(得分:2)

要自定义标记,您可以使用此在线工具执行此操作:https://materialdesignicons.com/

在您的情况下,您需要地图标记,它位于https://materialdesignicons.com/icon/map-marker,可以在线自定义。

如果您只想将默认红色更改为蓝色,则可以加载此图标:http://maps.google.com/mapfiles/ms/icons/blue-dot.png

这个帖子中提到过:https://stackoverflow.com/a/32651327/6381715

答案 7 :(得分:0)

This relatively recent article提供了一个简单示例,其中包含有限的Google Maps彩色图标集。