谷歌地图静态 API 中自定义图标锚点

3
我尝试使用shadow:false参数将自定义标记的锚点设置为中心,但似乎被忽略了:
这是没有自定义标记的图像:

https://maps.googleapis.com/maps/api/staticmap?size=1024x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=48.85777,2.2952&markers=48.86493,2.31033

没有自定义标记 带有自定义标记但没有阴影参数的相同图像:

https://maps.googleapis.com/maps/api/staticmap?size=1024x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=icon:url|48.85777,2.2952&markers=48.86493,2.31033

enter image description here

将自定义标记和阴影参数设置为false的相同图像:

https://maps.googleapis.com/maps/api/staticmap?size=1024x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=shadow:false|icon:url|48.85777,2.2952&markers=48.86493,2.31033

enter image description here


我认为你当前的自定义标记图像有一个阴影,如"Marker shadows were removed in version 3.14 of the Google Maps JavaScript API. Any shadows specified programmatically will be ignored." 关于支持细节,这里有一个关于标记阴影的之前的SO问题。在自定义图标的示例中没有阴影。希望这可以帮到你。 - Mr.Rebot
2
功能请求:问题2185:自定义标记的锚点位置 - geocodezip
可能与问题跟踪器中的问题相关:问题6104:错误:自定义图标开始显示在错误位置,没有阴影 - geocodezip
1
在跟踪器中创建了一个问题:Issue 9713: Bug: Custom Icons anchor in wrong place per documentation(https://code.google.com/p/gmaps-api-issues/issues/detail?id=9713) - geocodezip
对于那些关注此问题的人,谷歌已经提供了修复方案,它只是改变了文档中的说明:“自定义图标的锚点设置为图像底部中心。”...更好的说法是,这不是预期的解决方法。https://code.google.com/p/gmaps-api-issues/issues/detail?id=9713 - ylecuyer
显示剩余4条评论
2个回答

2
2017年1月27日,谷歌报告称已经修复了 问题2185 。因此,从现在开始您可以在静态地图API中为自定义标记定义锚点位置。
文档也已更新:
引用:
您可以指定自定义图标的锚点。锚点设置图标相对于指定标记位置的放置方式。默认情况下,自定义图标的锚点是图标图像的底部中心。您可以使用锚点描述符指定不同的锚点,结合您的图标一起使用。将锚点设置为图标的x,y点(例如10,5),或者使用以下值之一预定义的对齐方式:上、下、左、右、中、左上、右上、左下或右下。

https://developers.google.com/maps/documentation/maps-static/start#CustomIcons

"所以现在你可以将你的例子重新写成:"

https://maps.googleapis.com/maps/api/staticmap?size=640x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=anchor:center|icon:http%3A%2F%2Fgoo.gl%2FavYzpd|48.85777,2.2952&markers=48.86493,2.31033&center=48.85777,2.2952

centeredImage


0

你可以在查询中设置一个 center 参数,怎么样?

https://maps.googleapis.com/maps/api/staticmap?size=640x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=icon:http%3A%2F%2Fgoo.gl%2FavYzpd|48.85777,2.2952&markers=48.86493,2.31033&center=48.85777,2.2952

结果:centeredImage

尽管地图实际上是居中的,但图标却不在起点上...这应该以某种方式进行修复。 :/

编辑
所以......这里有一个非常丑陋的解决方法:只需重新设置您的标记的纬度值。通过尝试和错误,我得到了这个:

https://maps.googleapis.com/maps/api/staticmap?size=640x512&path=weight:3|color:0x000000FF|enc:apeiH_h_M{H}LqFjJ_CkFsB_H}@mFUcG]qFm@mt@uM\&markers=icon:http%3A%2F%2Fgoo.gl%2FavYzpd|48.857,2.2952&markers=48.86453,2.31033

根据这个结果: uglyWA

显然,使用这个缩放级别和我的特定图标,只需在标记的Lat值中减去0.00077即可。

最终结论

实际上,没有办法从URL请求中正确地居中图像。另一方面,我们可以绘制适合我们目的的自定义图标。只需在图标(透明空间)上添加一些上边距即可。


问题不在于将地图居中。 - ylecuyer
给定的解决方案不可接受,因为它仅适用于给定的经度/纬度/缩放级别。 - ylecuyer
我能想到的唯一可接受的选项是在图标上方添加一些透明空间(边距)。 - Soldeplata Saketos

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