最近我发现了在屏幕上的 LatLngs 和像素坐标之间进行转换的困难方法,我不应该使用 Projection可以通过 Map.getProjection 轻松访问的类,但我应该使用 MapCanvasProjection只能通过 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();
};
这一切看起来像是一个大黑客来完成一些本来应该是微不足道的事情。这让我更加想知道 google.maps.Projection 是什么意思?类做什么?当我阅读文档时,在我看来, Projection.fromLatLngToPoint
与 MapCanvasProjection.fromLatLngToContainerPixel
执行相同的操作,但事实并非如此。我很困惑。
最佳答案
Projection.fromLatLngToPoint 表示从纬度经度转换为墨卡托投影。 MapCanvasProjection 进行像素投影(包括墨卡托投影)。
关于google-maps - google.maps.Projection 类的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776444/