如何将SVG代码转换为javascript函数,为google map marker创建SVG代码
我已经生成了一个svg图标,我想操纵填充颜色。我只是不知道如何将这个svg代码转换成可操作的javascript函数如何将SVG代码转换为javascript函数,为google map marker创建SVG代码,javascript,google-maps-api-3,svg,Javascript,Google Maps Api 3,Svg,我已经生成了一个svg图标,我想操纵填充颜色。我只是不知道如何将这个svg代码转换成可操作的javascript函数 <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1/
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
<path fill="#48B3CC" d="M256,0C149.969,0,64,85.969,64,192c0,43.188,14.25,83,38.313,115.094L256,512l153.688-204.906
C433.75,275,448,235.188,448,192C448,85.969,362.031,0,256,0z M256,320c-70.688,0-128-57.312-128-128c0-70.687,57.313-128,128-128
c70.688,0,128,57.313,128,128C384,262.688,326.688,320,256,320z"/>
<circle fill="#FFFFFF" cx="255.5" cy="191.5" r="129"/>
</svg>
我不知道将
标记放入此代码的何处。感谢有人能帮助您使用js动态添加svg元素,您需要创建svg元素
以下函数返回可附加到sag元素的svg圆:
function drawCircle(cx, cy, r, fill, id //optional) {
var circle = document.createElementNS("http://www.w3.org/2000/svg","circle");
circle.setAttribute("cx", cx);
circle.setAttribute("cy", cy);
circle.setAttribute("r", 0);
circle.setAttribute("fill", fill);
if (typeof (id) !== 'undefined') {
circle.setAttribute("id", id);
}
return circle;
}
然后,您可以将圆添加到svg中,如图所示
var circle = drawCircle(255.5, 191.5, 129, "#FFFFFF", 'myCircle');
svg.appendChild(circle); // where svg refers to your actual svg element
稍后,您可以使用id更改其属性,如下所示
var circle =document.getElementById('myCircle');
circle.setAttribute("fill", 'new color');
要将圆添加到google图标路径,可以将其转换为圆弧。但是,我认为最好的方法是为每个图标填充创建单独的svg文件。与构建svg路径图标不同,您将使用如下svg文件(注意,您必须更改viewBox或内置Illustrator,因此svg将与图标大小相同): 然后,当您要添加标记时:
GreenMarker = new google.maps.Marker(
{
position: location,
map: MyMap,
icon: MyGreenSVG
});
RedMarker = new google.maps.Marker(
{
position: location,
map: MyMap,
icon: MyRedSVG
});
检查这篇文章:您是想动态生成整个svg,还是只想更改元素填充颜色?只是填充颜色。不知道如何放置
圆圈
标记并精确缩放它如果看看我上面的问题,我不能简单地将其应用到svg上,因为我使用了google Map。您想更改单个svg标记的填充,还是所有使用此特定svg路径+圆圈的标记的填充?我有一些其他颜色,而不仅仅是两种。很抱歉
MyGreenSVG = {
url: 'greenFill.svg',
size: new google.maps.Size(10, 10),
origin: new google.maps.Point(0,0),
anchor: new google.maps.Point(5, 5)
};
MyRedSVG = {
url: 'redFill.svg',
size: new google.maps.Size(10, 10),
origin: new google.maps.Point(0,0),
anchor: new google.maps.Point(5, 5)
};
GreenMarker = new google.maps.Marker(
{
position: location,
map: MyMap,
icon: MyGreenSVG
});
RedMarker = new google.maps.Marker(
{
position: location,
map: MyMap,
icon: MyRedSVG
});