自定义标记颜色为默认(点)标记
我已经看到许多类似于此的其他问题(这里,这里和这里),但他们都接受了不能解决我的问题的答案。 我发现问题的最佳解决方案是StyledMarker库,它可以让您为标记定义自定义颜色,但我无法使用默认标记(您在执行Google地图搜索时获得的标记 - 与中间的一个点),它似乎只提供带有字母的标记或带有特殊图标的标记。
您可以使用网址动态请求Google图表API中的图标图像:
http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|FE7569
看起来像这样: 图像是21x34像素,引脚尖端在位置( 10,34 )
而且你还需要一个单独的阴影图像(以便它不与附近的图标重叠):
http://chart.apis.google.com/chart?chst=d_map_pin_shadow
看起来像这样: 图像是40x37像素,针尖位于位置( 12,35 )
当您构建MarkerImages时,您需要相应地设置尺寸和定位点:
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
});
只需用您之后的颜色代码替换“FE7569”即可。 例如:
由于Jack B Nimble的灵感而获得信用;)
如果您使用Google Maps API v3,则可以使用setIcon
eg
marker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png')
或者作为标记init的一部分:
marker = new google.maps.Marker({
icon: 'http://...'
});
其他颜色:
使用以下代码段以不同颜色更新默认标记。
(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)
这是使用Gooogle Maps API本身的一个很好的解决方案。 没有外部服务,没有额外的图书馆。 它可以自定义形状和多种颜色和样式。 该解决方案使用矢量标记,其中谷歌地图API调用符号。
除了少数和有限的预定义符号之外,您可以通过指定SVG路径字符串(Spec)来制作任何颜色的任何形状。
要使用它,而不是将“图标”标记选项设置为图像url,请将其设置为包含符号选项的字典。 例如,我设法制作了一个与标准标记非常相似的符号:
function pinSymbol(color) {
return {
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 M -2,-30 a 2,2 0 1,1 4,0 2,2 0 1,1 -4,0',
fillColor: color,
fillOpacity: 1,
strokeColor: '#000',
strokeWeight: 2,
scale: 1,
};
}
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(latitude, longitude),
icon: pinSymbol("#FFF"),
});
我小心地将形状关键点保持在0,0,避免必须定义标记图标居中参数。 另一个路径示例,不带点的相同标记:
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',
在这里你有一个非常简单和丑陋的彩旗:
path: 'M 0,0 -1,-2 V -43 H 1 V -2 z M 1,-40 H 30 V -20 H 1 z',
您还可以使用Inkscape(GNU-GPL,多平台)等可视化工具创建路径。 一些有用的提示:
上一篇: Custom marker color for default (dot) marker
下一篇: Google Maps Api v3