マップコンテナ座標とレイヤー座標の違いは何ですか?
私が集められたところでは、地図のコンテナの座標は常にマップビューポートに対して相対的である、としながら、層の座標が常に同じ値でスタートコンテナcoordsのマップがパンされると、彼らが変更されます。
座標/ポイントを参照するAPI:
マップコンテナ座標とレイヤー座標の違いは何ですか?
私が集められたところでは、地図のコンテナの座標は常にマップビューポートに対して相対的である、としながら、層の座標が常に同じ値でスタートコンテナcoordsのマップがパンされると、彼らが変更されます。
座標/ポイントを参照するAPI:
回答:
containerPointのメソッドは2012年に機能要求からさかのぼりますが、今日では少し混乱しています。
最良の答えは、リーフレットのメンテナーであるウラジミール・アガフォンキンの説明です:
「layerPointは、実際には外側のマップコンテナではなく、マップレイヤー(タイルとマーカーを含むdiv)に相対的なポイントです。必要なのはmap.layerPointToContainerPointです。しかし、すぐに取得する便利な方法がないことに同意します。次のバージョンのために。」
より詳細に:
Leafletの主要なパブリック変換メソッドは、アプリケーション開発者によってめったに使用されませんがL.Map.project(latlng [, zoom])
、とL.Map.unproject(point [, zoom])
です。
Webマップは、それぞれ同じピクセル数のタイルのグリッドに分割されます。より高いズームレベルでは、マップはより多くのタイルに分割され、対応するより多くのピクセルが表示されます。したがって、マップのピクセルサイズはズームレベルに依存します。
これは、ブラウザのLeafletデモウィンドウをいじっている場合、特定のlatlngのL.Map.project`の出力は、ズームインまたはズームアウトした場合にのみ変化することを意味します。
Leafletの最新バージョン(0.7.3)の時点での定義はL.Map.latLngToLayerPoint
次のとおりです。
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
対照的に、L.Map.latLngToContainerPoint
読み取り:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
とL.Map.layerPointToContainerPoint
定義されている:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
プライベートマップメソッド_getMapPanePos()
は、現在のマップの位置と最初に作成されたときの位置の間のオフセットを返します。これは、マップのパン中(ズーム中ではなく)にのみ変化するため、特定の緯度経度に対応するlayerPointとcontainerPointの違いは、layerPoint <div>
はマップが初期位置にあるマップコンテナ内の緯度経度の位置であり、 containerPointは、マップコンテナー内の緯度の現在の位置です<div>
。
編集:私は間違っていたことがわかります。コンテナ座標は可視フレーム用であるように見えますが、レイヤー座標は可視フレームよりも大きい領域用です。この質問に答えるには、私よりも知識のある人が必要です。