Krótka odpowiedź
Metody ContainPoint pochodzą z żądania funkcji w 2012 roku , a dziś są nieco mylące.
Najlepszą odpowiedzią jest opis opiekuna ulotki Vladimira Agafonkina:
„layerPoint to tak naprawdę punkt względem warstwy mapy (div zawierający kafelki i znaczniki), a nie zewnętrzny kontener mapy. Potrzebny jest map.layerPointToContainerPoint. Ale zgadzam się, że nie ma wygodnej metody, aby uzyskać go natychmiast, więc zaplanuj to do następnej wersji ”.
Długa odpowiedź
Bardziej szczegółowo:
Podstawowymi publicznymi metodami konwersji zawartymi w Ulotce, choć rzadko stosowane przez twórców aplikacji, są L.Map.project(latlng [, zoom])
i L.Map.unproject(point [, zoom])
.
Mapy internetowe są podzielone na siatkę kafelków, z których każda ma taką samą liczbę pikseli. Przy wyższych poziomach powiększenia mapa jest podzielona na większą liczbę kafelków o odpowiedniej większej liczbie pikseli. Rozmiar piksela mapy zależy zatem od poziomu powiększenia.
Oznacza to, że jeśli masz do czynienia z oknem demonstracyjnym Ulotki w przeglądarce, wyjście L.Map.project` dla danego języka zmieni się tylko wtedy, gdy powiększysz i pomniejszysz.
Od najnowszej wersji Ulotki (0.7.3) definicja L.Map.latLngToLayerPoint
brzmi:
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
Natomiast L.Map.latLngToContainerPoint
brzmi:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
ze L.Map.layerPointToContainerPoint
zdefiniowanym jako:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
Metoda mapy prywatnej _getMapPanePos()
zwraca przesunięcie między bieżącą pozycją mapy a jej pozycją, gdy została utworzona po raz pierwszy. Zmienia się to tylko podczas przesuwania mapy (nie podczas powiększania), więc różnica między warstwami pointPoint i containerPoint odpowiadającymi danym latlng polega na tym, że layerPoint jest pozycją latlng w kontenerze mapy <div>
z mapą w jego początkowej pozycji , podczas gdy containerPoint to bieżąca pozycja latlng w kontenerze mapy <div>
.
EDYCJA: okazuje się, że się myliłem. Wygląda na to, że współrzędne kontenera dotyczą widocznej ramki, podczas gdy współrzędne warstwy dotyczą większego obszaru niż ten widoczny. To pytanie potrzebuje kogoś bardziej kompetentnego niż ja, aby na nie odpowiedzieć.
źródło