代码之家  ›  专栏  ›  技术社区  ›  abeger

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

  •  161
  • abeger  · 技术社区  · 14 年前

    我正在使用google maps api来构建一个满是标记的地图,但是我希望一个标记能从其他标记中脱颖而出。我想,最简单的办法就是把标记的颜色改成蓝色,而不是红色。这是一件简单的事情还是我必须创建一个全新的图标?如果我必须创建一个新图标,最简单的方法是什么?

    7 回复  |  直到 6 年前
        1
  •  45
  •   mooreds    11 年前

    由于maps v2已弃用,您可能对v3 maps感兴趣: https://developers.google.com/maps/documentation/javascript/markers#simple_icons

    对于V2地图:

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

    您可以让一组逻辑执行所有“常规”管脚,另一组逻辑使用定义的新标记执行“特殊”管脚。

        2
  •  118
  •   Sean McMains    13 年前

    使用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'
    });
    

    这是非常简单的,也是我目前正在进行的项目所采用的方法。

        3
  •  49
  •   enorl76    6 年前

    mapiconmaker:google maps v2的库

    一种方法是使用 MapIconMaker . 有个例子 here . 谷歌地图默认图标的宽度为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”。此外,您可以在标记上设置图像,而不是使用新图标创建新标记。因此,如果您希望某个函数高亮显示,可以使用上面的函数执行以下操作:

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

    StyledMarker:GoogleMapsV3的库

    因为v2在某个时候被v3取代了,我想我应该更新这个答案。我为可以在v3实用程序库中找到的自定义标记创建了一个库 here . 它允许不同的颜色和形状,你也可以把文本放在标记上。它通过使用google charts api工作,该api有创建google地图类型标记的方法。如果您希望直接使用google charts api,可以随意查看源代码。

    不过,这个库的作用是它负责为您定义这些标记图像的可单击区域,因此,例如,带有文本的较长气泡将具有预期的可单击区域,如 this example .

        4
  •  25
  •   Jonathan    6 年前

    (不推荐)您不需要任何自定义库用于google maps v3。

    var pinColor = "FE7569";
    var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + pinColor,
        new google.maps.Size(21, 34),
        new google.maps.Point(0,0),
        new google.maps.Point(10, 34));
    var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
        new google.maps.Size(40, 37),
        new google.maps.Point(0, 0),
        new google.maps.Point(12, 35));
    var marker = new google.maps.Marker({
                position: new google.maps.LatLng(0,0), 
                map: map,
                icon: pinImage,
                shadow: pinShadow
            });
    

    Matt Burns 自2014年10月起生效,但已弃用。

        5
  •  23
  •   Community Radu Dragan    7 年前

    我个人认为google charts api生成的图标看起来很棒,而且很容易动态定制。

    看我的回答 Google Maps API 3 - Custom marker color for default (dot) marker

        6
  •  11
  •   Michael Hamilton    10 年前

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

    MarkerOptions marker = new MarkerOptions()
                .title(formatInfo(data))
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                .position(new LatLng(data.getLatitude(), data.getLongitude()))
    
        7
  •  2
  •   GuGuss    6 年前

    要自定义标记,可以使用此联机工具执行此操作: 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