Коротка відповідь
Методи контейнераPoint датуються запитом на функції ще в 2012 році , і сьогодні вони дещо заплутані.
Найкраща відповідь - опис супроводу листівки Володимира Агафонкіна:
"layerPoint - це фактично точка відносно шару карти (div, який містить плитки та маркери), а не зовнішній контейнер карти. Вам потрібен map.layerPointToContainerPoint. Але я погоджуюся, що немає зручного способу отримати його негайно, тому плануйте це для наступної версії. "
Довга відповідь
Більш детально:
Основними методами публічної конверсії в Leaflet, хоча їх розробники додатків рідко використовуються, є L.Map.project(latlng [, zoom])
і L.Map.unproject(point [, zoom])
.
Веб-карти розбиті на сітку плиток, кожна з однаковою кількістю пікселів. При більш високих рівнях масштабування карта поділяється на більшу кількість плиток з відповідною більшою кількістю пікселів. Таким чином, розмір пікселя карти залежить від рівня збільшення.
Це означає, що якщо ви переплутаєтесь із демонстраційним вікном Leaflet у вашому браузері, вихід L.Map.project` для даної latlng зміниться лише при збільшенні та зменшенні.
Щодо останньої версії 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()
повертає зсув між поточною позицією карти та її позицією під час її створення. Це змінюється лише під час панорамування карти (не під час збільшення), тому різниця між шаромPoint та контейнеромPoint, що відповідає даному latlng, полягає в тому, що layerPoint - це положення latlng у контейнері карти <div>
з картою у його початковому положенні , тоді як containerPoint - поточне положення latlng в контейнері карти <div>
.