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

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

483087 次浏览

由于地图 v2已被弃用,因此您可能对 v3地图感兴趣: < a href = “ https://developers.google.com/map/document/javascript/marks # simple _ icon”rel = “ noReferrer”> https://developers.google.com/maps/documentation/javascript/markers#simple_icons

对于 v2地图:

Http://code.google.com/apis/maps/documentation/overlays.html#icons_overview

您将有一组逻辑来处理所有“常规”引脚,另一组逻辑使用新定义的标记来处理“特殊”引脚。

MapIconMaker: Google Maps v2库

一种方法是使用 MapIconMaker(死链接)。有一个例子 这里(死链接)。谷歌地图的默认图标是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: Google Maps v3库

由于 V2在某个时候被 V3取代了,我认为我应该更新这个答案。我为自定义标记创建了一个库,这些标记可以在 V3实用程序库 这里(死链接)上找到。它允许不同的颜色和形状,您也可以在标记上放置文本。它通过使用 Google Charts API 工作,该 API 具有创建 GoogleMaps 类型标记的方法。如果您更愿意直接使用 GoogleChartAPI,请随意查看源代码。

然而,这个库的问题在于,它负责为您定义这些标记图像的可点击区域,因此,例如,带有文本的较长的气泡将具有人们所期望的可点击区域,如 这个例子(死链接)。

使用谷歌地图 API 的第3版,最简单的方法可能是获取一个自定义图标集,比如 Benjamin Keen 在这里创建的图标集:

Http://www.benjaminkeen.com/google-maps-coloured-markers/

如果你把所有这些图标放在地图页面的同一个位置,你可以简单地使用合适的图标选项来为标记着色:

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

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

就我个人而言,我认为谷歌图表 API 生成的图标看起来很棒,并且易于动态定制。

在谷歌地图 API 3-默认(点)标记的自定义标记颜色中查看我的答案

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

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

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

编辑于2019年3月 现在用编程图钉颜色,

纯 JAVASCRIPT,无图像,支持标签

不再依赖已废弃的图表 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,
});

要自定义标记,你可以通过这个在线工具来实现: < a href = “ https://ateraldesign icons.com/”rel = “ nofollow norefrer”> https://materialdesignicons.com/

在你的情况下,你想要的 地图标记可在这里: https://materialdesignicons.com/icon/map-marker,你可以自定义在线。

如果你只是想把默认的红色改成蓝色,你可以加载这个图标: < a href = “ http://maps.google.com/mapfiles/ms/icon/Blue-dot.png”rel = “ nofollow norefrer”> http://maps.google.com/mapfiles/ms/icons/Blue-dot.png

在这个帖子中提到过: < a href = “ https://stackoverflow./a/32651327/6381715”> https://stackoverflow.com/a/32651327/6381715

这篇相对较新的文章 提供了一个简单的例子,其中包含一组有限的 Google Maps 彩色图标。

有关使用蓝色和橙色地图标记的实际网站示例,请参见 本网站并在 Google 地图下查看脚本。

<section id="map" class="map">


<script>
let map;
const speediwash = { lat: 52.656937, lng: -8.634390 };
const stJosephX = { lat: 52.658041, lng: -8.632414};
// const maryI = { lat: 52.653192, lng: -8.638974 };
const trainStn = { lat: 52.658757, lng: -8.623560 };
// const claytonH = { lat: 52.660802, lng: -8.636411 };
                     

let markersArray = [];          // Global array to store the marker object


function initMap()
{
map = new google.maps.Map(document.getElementById('map'),
{
center: stJosephX,
zoom: 15.1
});
addMarker(speediwash, "Speediwash", "blue");
//addMarker(maryI, "Mary I College", "green");
addMarker(trainStn, "Train Station", "orange");
//addMarker(claytonH, "Clayton Hotel", "purple");
}


function addMarker(latLng, alabel, color)
{
let url = "https://maps.google.com/mapfiles/ms/icons/";
url += color + "-dot.png";
                      

let marker = new google.maps.Marker(
{
map: map,
position: latLng,
label: alabel,
icon:
{
url: url,
labelOrigin: new google.maps.Point(60, 30)
}
});
}
</script>


<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyANwXk4HVQv7w5WAEUCStjAgT25b0s0p1Y&callback=initMap">
</script>

2022解决方案: 高级标记

你好,谷歌地图 JavaScript API 开发者在这里。

谷歌最近宣布了新的 高级标记,它有一些非常酷的 特征,包括定制默认标记的颜色,字形,字形颜色和比例等。我们一直在努力提高表现。

新的 API 仍处于测试阶段,我们希望得到您的反馈!

enter image description here