为什么我的地图引脚在缩小时越来越不准确?谷歌地图API V3

时间:2011-06-02 20:18:38

标签: google-maps

http://www.dissentskateshop.co.uk/store-locator/

你可以看到地图别针位于海中,但如果放大,它就在我设置的位置。我正用这个把头发拉出来......

2 个答案:

答案 0 :(得分:4)

从这个行为我猜测锚点没有正确设置:锚点似乎位于图像的左下角,虽然“可见”锚点(引脚)更右边,因此总是偏移。如果以像素为单位查看距离,无论缩放级别如何,原始坐标的偏移量始终保持不变。

我查看了您的脚本:在文件store-locator.js中,方法addMarkernew google.maps.MarkerImage的第四个参数是锚点。您已将其设置为(0,32)(即图像的左下角)。那是错的!获取正确的锚位置并更改代码。

编辑:我看过图像:正确的锚点坐标是(16,31)。试一试: - )

答案 1 :(得分:2)

这是您的自定义标记的问题,而不是地图坐标注册问题。

您需要将锚点放在图像的中心线上:16,32而不是0,32。 我在您的网页副本上对此进行了测试。

var image    =  new google.maps.MarkerImage('http://www.google.com/intlen_us/mapfiles/ms/micons/red-dot.png',
                                new google.maps.Size(32, 32),
                                new google.maps.Point(0,0),
                                new google.maps.Point(16, 32));

还要注意编辑阴影图像。

为了好玩,我将格林威治天文台添加到你的商店.json:

{
        "name"      : "Greenwich Observatory",
        "latitude"  : "51.47722",
        "longitude" : "0.0",
        "postcode"  : ""
}

在缩放级别6(默认),格林威治天文台标记位于地图上剑桥点的东边。 放大两个级别,它在西边!那当然是在修复bug之前。