在Google地图中获取(x,y)中的标记位置

Pra*_*ant 4 google-maps

我正在使用谷歌地图.我想在标记点击上显示自定义信息窗口.为此,我的自定义信息窗口的左上角应覆盖标记.

问题是我无法在地图上得到标记的精确(x,y)即map-div位置.我第一次可以使用它:

var mposition = map.fromLatLngToDivPixel(marker.getLatLng());
pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(mposition.x,mposition.y));
Run Code Online (Sandbox Code Playgroud)

但是当我拖动地图时,x,y中的标记位置保持不变,因此我的信息窗口显示在错误的位置.请帮助我,即使在拖动/缩放后,如何在地图上获得标记的div相关位置.

谢谢.

Fla*_*rex 17

var overlay = new google.maps.OverlayView();
overlay.draw = function() {};
overlay.setMap(map);

var proj = overlay.getProjection();
var pos = marker.getPosition();
var p = proj.fromLatLngToContainerPixel(pos);
Run Code Online (Sandbox Code Playgroud)

您现在可以通过px和py访问像素坐标

或者,您可以尝试将fromLatLngToDivPixel更改为fromLatLngToContainerPixel.在平移地图之前,两个函数都将返回相同的值,但在移动或操纵地图中的任何内容后,DivPixel函数将返回与其原始位置相关的更新值,即:+ x/+ y像素.ContainerPixel函数将返回有关容器div左上角的值.