Jawaban singkat
Metode metode containerPoint berasal dari permintaan fitur pada tahun 2012 , dan hari ini, mereka agak membingungkan.
Jawaban terbaik adalah deskripsi pengelola Leaflet, Vladimir Agafonkin:
"layerPoint sebenarnya adalah titik relatif terhadap lapisan peta (div yang berisi petak dan marker), bukan wadah peta luar. Yang Anda butuhkan adalah map.layerPointToContainerPoint. Tapi saya setuju tidak ada metode yang mudah untuk segera mendapatkannya, jadi jadwalkan ini untuk versi selanjutnya. "
Jawaban panjang
Lebih detail:
Metode konversi publik inti di Leaflet, meskipun jarang digunakan oleh pengembang aplikasi, adalah L.Map.project(latlng [, zoom])
dan L.Map.unproject(point [, zoom])
.
Peta web dibagi menjadi beberapa kotak ubin, masing-masing dengan jumlah piksel yang sama. Pada tingkat zoom yang lebih tinggi, peta dibagi menjadi jumlah ubin yang lebih besar, dengan jumlah piksel yang lebih besar. Dengan demikian ukuran piksel peta tergantung pada tingkat pembesaran.
Ini berarti bahwa jika Anda bermain-main dengan jendela demo Leaflet di browser Anda, output dari L.Map.project` untuk latlng yang diberikan hanya akan berubah jika Anda memperbesar dan memperkecil.
Pada versi terbaru Leaflet (0.7.3), definisi L.Map.latLngToLayerPoint
bacaan:
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
Sebaliknya, L.Map.latLngToContainerPoint
berbunyi:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
dengan L.Map.layerPointToContainerPoint
didefinisikan sebagai:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
Metode peta pribadi _getMapPanePos()
mengembalikan offset antara posisi peta saat ini dan posisinya saat pertama kali dibuat. Ini hanya berubah selama panel peta (bukan saat zoom), jadi perbedaan antara layerPoint dan containerPoint yang terkait dengan latlng yang diberikan adalah bahwa layerPoint adalah posisi latlng dalam wadah peta <div>
dengan peta di posisi awalnya , sedangkan containerPoint adalah posisi latlng saat ini dalam wadah peta <div>
.
EDIT: ternyata saya salah. Koordinat kontainer tampaknya untuk bingkai yang terlihat sementara koordinat lapisan untuk area yang lebih besar daripada yang terlihat. Pertanyaan ini membutuhkan seseorang yang lebih berpengetahuan daripada saya untuk menjawabnya.
sumber