使用SVG标记时,Google地图在缩放过程中存在标记对齐问题

4
出现了一个问题,使用path定义的svg标记在缩放时无法正确对齐其位置。在谷歌提供的示例中可以看到这一点。
有趣的是,如果我们使用一个内置的svg符号,似乎就不会出现这个问题。
我正在使用此SVG路径作为我的标记,但它也存在对齐问题:
M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991 C 302.92,303.288, 281.702,282.245, 255.498,282.245z

这个问题的原因是什么?


编辑:感谢MrUpsidown解决了这个问题。SVG需要将其锚点设置为画布的(0,0)。

请参考此图片(我正在使用Illustrator,但任何其他SVG编辑应用程序都可以): enter image description here

更新后的示例在这里:http://jsfiddle.net/tf83z/

1个回答

4
您需要定义SVG标记的锚点。
请参考文档:https://developers.google.com/maps/documentation/javascript/reference#Icon 锚点:相对于地图上标记位置定位图像的位置。默认情况下,锚点位于图像底部中心点。
如果您希望在路径边缘锚定具有对称符号的标记,则可能会很棘手,但通常可以在路径的值中找到正确的点。
var icon = {

    path: "M 256,480c-84.828,0-153.6-68.157-153.6-152.228c0-84.081, 153.6-359.782, 153.6-359.782s 153.6,275.702, 153.6,359.782C 409.6,411.843, 340.828,480, 256,480z M 255.498,282.245c-26.184,0-47.401,21.043-47.401,46.981c0,25.958, 21.217,46.991, 47.401,46.991c 26.204,0, 47.421-21.033, 47.421-46.991 C 302.92,303.288, 281.702,282.245, 255.498,282.245z",
    fillColor: '#FFFF00',
    fillOpacity: .6,
    anchor: new google.maps.Point(255.498,-26.204),
    strokeWeight: 0,
    scale: .25,
    rotation: 180
}

我为参考添加了默认标记。

JSFiddle演示


谢谢您的回答!还有几个问题:1. 如何找到锚点?有什么工具吗?2. 我在Illustrator中旋转了路径,使其面向正确的方向,我们不需要设置“旋转”:“M721,216c84.8,0,153.6,68.2,153.6,152.2C874.6,452.3,721,728,721,728S567.4,452.3,567.4,368.2 C567.4,284.1,636.2,216,721,216z M721.5,413.7c26.2,0,47.4-21,47.4-47c0-26-21.2-47-47.4-47c-26.2,0-47.4,21-47.4,47 C674.1,392.7,695.3,413.7,721.5,413.7z”如果默认情况下锚点是底部中心点,为什么在旋转后的图像中问题仍然存在? - F21
你的新路径对我似乎不起作用。你能否fork我的fiddle并在这里发布链接?我不知道是否有工具可以找到锚点。我通常从0,0开始,然后尝试将其居中,就像我想要的那样。也许有一种技巧,但我不知道。 - MrUpsidown
不确定为什么在输入路径时会发生什么,但这是分叉的 fiddle:http://jsfiddle.net/N63jN/ - F21
1
你没有设置锚点。那么你现在的问题是什么?你的SVG是否居中于画布上? - MrUpsidown
文档中指出,默认情况下锚点是图像的底部中心。如果是这种情况并且图像已正确旋转,为什么需要锚点才能使其正确对齐? - F21
就是这样!图像的“锚点”需要是(0,0)。 - F21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接