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は、ピクセル(Mercatorを含む)への投影を行います。

于 2011-04-27T15:28:27.780 に答える