Google maps 将谷歌地图上的点平移到屏幕上的特定像素位置(API v3)

Google maps 将谷歌地图上的点平移到屏幕上的特定像素位置(API v3),google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,当overlay是谷歌地图覆盖,并且offsetx,offsety是我要平移latlong到的地图中心的像素距离时,以下操作有效 var projection=overlay.getProjection(); var pxlocation=投影。从LatlngToContainerPixel(latlong); panTo(projection.fromContainerPixelToLatLng(新的google.maps.Point(pxlocation.x+offsetx,pxlocati

overlay
是谷歌地图覆盖,并且
offsetx,offsety
是我要平移
latlong
到的地图中心的像素距离时,以下操作有效

var projection=overlay.getProjection();
var pxlocation=投影。从LatlngToContainerPixel(latlong);
panTo(projection.fromContainerPixelToLatLng(新的google.maps.Point(pxlocation.x+offsetx,pxlocation.y+offsety));
但是,我并不总是在地图上有一个覆盖,并且
map.getProjection()
返回一个
projection
,而不是
MapCanvasProjection
,它没有我需要的方法


有没有一种方法可以做到这一点,而不必为它专门制作一个覆盖层?

既然没有人能想出更好的方法,下面是我的解决方案。只需给我一个
MapCanvasProjection
对象,就可以制作一个覆盖图

var helper=new google.maps.OverlayView();
setMap(map);
helper.draw=函数(){
如果(!this.ready){
this.ready=true;
google.maps.event.trigger(这个“ready”);
} 
}; 
var projection=helper.getProjection();
...
希望这对别人有帮助。欢迎提供更好的建议。

谷歌文档说,“在API调用onAdd之前,投影不会初始化。”因此调用helper.getProjection();创建帮助程序后,立即返回null。所以使用以下命令:helper.onAdd=function(){projection=helper.getProjection();};