Google Maps标记位置偏移求助:如何让标记显示在正确坐标点?
解决Google地图标记位置偏移的问题
看起来你的标记没对准蓝色叉号,大概率是两个小问题导致的,咱们一步步来修复:
1. 先修复代码里的语法错误
你定义的markers数组里多了一个多余的逗号:
var markers = [ ['Wandsworth Town Library', 51.4562217,-0.1932119,'library.png'],, ];
这个逗号会让数组里多一个undefined元素,虽然不会直接导致位置偏移,但可能引发其他潜在问题,先把它删掉,改成:
var markers = [ ['Wandsworth Town Library', 51.4562217,-0.1932119,'library.png'] ];
2. 为自定义图标设置锚点(核心解决位置偏移)
这是标记偏离蓝色叉号的最可能原因:Google地图默认标记的锚点是图标底部中间,但你用了自定义的library.png,如果没指定锚点,地图会默认把图标的左上角作为锚点,导致标记显示位置和实际经纬度偏移。
修改创建Marker的代码,添加图标锚点配置:
marker = new google.maps.Marker({ position: position, map: map, title: markers[i][0], icon: { url: iconBase + markers[i][3], // 根据你的图标尺寸调整数值:x是图标的宽度一半,y是图标的总高度 // 示例:如果图标是32x32像素,锚点设为(16, 32) anchor: new google.maps.Point(16, 32) } });
你需要根据library.png的实际尺寸调整anchor数值,比如图标是24x24,就改成new google.maps.Point(12, 24),确保锚点落在图标的底部中间,这样标记就会精准对准你右键获取的蓝色叉号位置了。
额外检查:确认坐标是否正确
最后再核对一遍你复制的经纬度:右键“What's Here?”得到的蓝色叉号坐标,有没有把纬度(lat)和经度(lng)搞反?Google Maps的LatLng是纬度在前、经度在后,你的代码里顺序是对的,但再确认一遍更稳妥。
内容的提问来源于stack exchange,提问作者Naz
相关产品推荐
相关产品推荐

