多色谷歌地图SVG符号(Multi-colored Google Map SVG Symbols)

2019-07-18 17:01发布

一个谷歌地图标记可以采取一个复杂的SVG路径作为其图标,在这样的:

var baseSvg = {
    x1 : "m 0,0 l45,0 l 190,225 l -45,0 l -190,-225 z",
    x2 : "m 225,0 l -45,0 l -190,225 l 45,0 l 190,-225 z"                
};

var baseIcon = {
    path: "M0,0 " + baseSvg["x1"] + baseSvg["x2"],
    fillColor: "#000000",
    fillOpacity: 1,
    scale: .2,
    strokeColor: "black",
    strokeWeight: 0,
    rotation: 15
};

然后将其送入一个标记:

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(somelat, somelng),
    icon: baseIcon 
});

都好。 但它只是一次绘制颜色(黑色在这个例子中)。 因此,可他们只有一个单一的颜色或者是有办法有多种颜色的符号? 使用示例代码,X1将是红色和X2将是绿色的。

请注意,这个结构就是从这里借来的: 我如何指示在谷歌地图API V3的SVG路径的透明度? 和它工作得很好。

Answer 1:

我只是做了同样的事情,我认为你必须绘制两个标记用基本相同的数据,但与path ,在这种情况下fillColor的属性变化:

var baseSvg = {
        x1 : "m 0,0 l45,0 l 190,225 l -45,0 l -190,-225 z",
        x2 : "m 225,0 l -45,0 l -190,225 l 45,0 l 190,-225 z"                
    },
    baseIcon = {
        fillOpacity: 1,
        scale: .2,
        strokeColor: "black",
        strokeWeight: 0,
        rotation: 15
    },
    markerPos = new google.maps.LatLng(somelat, somelng),
    // psuedo code for cloning an object since that 
    // is out of scope for this question
    greenIcon = Object.clone(baseIcon),
    redIcon = Object.clone(baseIcon);

greenIcon.path = baseSvg.x1;
greenIcon.fillColor = "#0f0";
redIcon.path = baseSvg.x2;
redIcon.fillColor = "#f00";

var marker1 = new google.maps.Marker({
    position: markerPos,
    map: map,
    icon: greenIcon
});
var marker2 = new google.maps.Marker({
    position: markerPos, 
    map: map,
    icon: redIcon
});

显然不是优化的JS,但你的想法。



Answer 2:

当涉及到透明度, strokeOpacity为你的男人。 检查maps.Symbol类关于符号属性的更多信息。



文章来源: Multi-colored Google Map SVG Symbols
标签: svg maps