最近,我发现在屏幕上转换LatLngs和像素坐标的方法很难,我不应该使用通过Map.getProjection很容易访问的Projection类,而应该使用只能通过OverlayView访问的MapCanvasProjection类。
如果你正在使用一个自定义的覆盖,那么后者很好用,但是如果你不是这样的话,访问MapCanvasProjection是非常痛苦的。到目前为止,我已经通过向Map类添加一个方法为自己解决了这个问题,该方法使我可以轻松访问所需的投影类:
google.maps.Map.prototype.getCanvasProjection = function() {
if (!this.projectionOverlay) {
this.projectionOverlay = new google.maps.OverlayView();
this.projectionOverlay.onAdd = function(){};
this.projectionOverlay.onRemove = function(){};
this.projectionOverlay.draw = function(){};
this.projectionOverlay.setMap(this);
}
return this.projectionOverlay.getProjection();
};
这一切看起来都像是做一些本应微不足道的事情的大动作。这让我更想知道google.maps.Projection类是做什么的?当我阅读文档时,在我看来Projection.fromLatLngToPoint
做了与MapCanvasProjection.fromLatLngToContainerPixel
相同的事情,但事实并非如此。我很困惑。
发布于 2011-04-27 23:28:28
Projection.fromLatLngToPoint意味着从纬度经度到墨卡托投影的转换。MapCanvasProjection对像素进行投影(包括墨卡托)。
https://stackoverflow.com/questions/5776444
复制相似问题