最近我发现在屏幕上转换LatLngs和像素坐标之间的困难方法我不应该使用通过Map.getProjection轻松访问的Projection类,而应该使用{{3只能通过OverlayView访问的类。
如果您正在使用自定义叠加层,后者很好用,但如果不是,那么访问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();
};
这一切都看起来像是一件很难做的事情应该是微不足道的。而且它让我想知道MapCanvasProjection班级做了什么?当我阅读文档时,在我看来Projection.fromLatLngToPoint
与MapCanvasProjection.fromLatLngToContainerPixel
做同样的事情,但事实并非如此。我很困惑。
答案 0 :(得分:3)
Projection.fromLatLngToPoint表示从纬度经度转换为墨卡托投影。 MapCanvasProjection对像素进行投影(包括墨卡托)。