2

最近我发现了在屏幕上的 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,但事实并非如此。我很困惑。

4

1 回答 1

3

Projection.fromLatLngToPoint 表示从纬度经度转换为墨卡托投影。MapCanvasProjection 对像素(包括墨卡托)进行投影。

于 2011-04-27T15:28:27.780 回答