我刚刚开始测试Google Maps API v3.9 中添加的新符号功能。我想在地图上有多个类似三角形的符号,并且我希望能够以编程方式旋转它们。我之前拥有的是一组 png 图像,其中每一个都是最后一个的副本,只是旋转了 10 度(MyIcon_0、MyIcon_10、...、MyIcon350)。然后我会画出最接近我想要的旋转角度的图像。
相反,使用新的符号功能似乎是一种更简单的方法,它可以以编程方式完全控制旋转和颜色。
使用 SVG 路径表示法,我定义了一个简单的三角形,并将其粘贴在标记上,如下所示:
var markerOptions = {
icon: {
path: "M 0 5 L 20 5 L 10 40 z",
rotation: rotationAngle,
anchor: [something]
},
position: position
};
var marker = new Marker(markerOptions);
只要“rotationAngle”设置为 0,它就可以正常工作,因为我知道锚点必须是什么才能将符号放在地图中的正确位置。我希望锚始终位于三角形的“锐角”处。
当我有另一个旋转角度时会出现问题。该符号绘制在矩形画布上,画布的尺寸似乎是自动计算的,以最适合内部的形状。当您旋转像这个三角形这样的符号时,您将拥有一个基于旋转具有不同尺寸的画布,这使得在地图上正确定位符号变得困难,因为锚点似乎是相对于画布尺寸设置的。
如果我只能控制实际画布的大小,我将能够绘制符号,使锚始终位于画布的中心,然后就可以设置一个恒定的锚。这有可能吗?我在考虑是否可以在形状周围绘制一个不可见的圆圈,以确保画布大小保持不变,但我对 SVG 路径表示法不太熟悉,我不知道这是否可以实现。
将感谢有关此问题的任何建设性反馈。