リーフレット:コンテナ座標とレイヤー座標?


17

マップコンテナ座標レイヤー座標の違いは何ですか?

私が集められたところでは、地図のコンテナの座標は常にマップビューポートに対して相対的である、としながら、層の座標が常に同じ値でスタートコンテナcoordsのマップがパンされると、彼らが変更されます。

座標/ポイントを参照するAPI:

回答:


21

短い答え

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>


1
男-もし私が賛成票を投じることができれば、あなたは100倍賛成されるでしょう。
Saad Malik 14

0

編集:私は間違っていたことがわかります。コンテナ座標は可視フレーム用であるように見えますが、レイヤー座標は可視フレームよりも大きい領域用です。この質問に答えるには、私よりも知識のある人が必要です。


1
アレックス-私はそれが正しいとは思わない。コンテナの座標とレイヤーの座標は両方とも、コンテナの原点(左上)からのピクセルで指定されます。ただし、マップのパンを開始すると、マーカーのレイヤー座標/ポイントは同じままですが、マーカーのマップ座標/ポイントは左上の原点にそれぞれ更新されます。
サアドマリク

こんにちは@ SimFox3、あなたは正しいです。そして、私は何かを言う前にそれをテストするべきでした!レイヤーポイントは、保持されている一種の「ウィンドウ」に対して定義された座標であり、画面よりも大きいということです。これは、画面よりも生々しいキャッシュビューのようなものです。そのため、レイヤーポイントの座標は変化しますが、頻繁には変化せず、「ウィンドウ」が移動したときにのみ変化します。コンテナポイントの座標は、常に可視ビューに対する座標に限定されているように見えます。そうは言っても、私はあなた以外何も知らないのは明らかです。だから、もしLeaflet開発者なら素晴らしいことです。チップインできます!
アレックスリース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.