Respuesta corta
Los métodos de containerPoint datan de una solicitud de características en 2012 , y hoy son un poco confusos.
La mejor respuesta es la descripción del mantenedor de folletos Vladimir Agafonkin:
"layerPoint es en realidad un punto relativo a la capa del mapa (el div que contiene mosaicos y marcadores), no el contenedor del mapa externo. Lo que necesita es map.layerPointToContainerPoint. Pero estoy de acuerdo en que no hay un método conveniente para obtenerlo de inmediato, así que programe esto para la próxima versión ".
Respuesta larga
En mayor detalle:
Los principales métodos de conversión pública en Leaflet, aunque rara vez los usan los desarrolladores de aplicaciones, son L.Map.project(latlng [, zoom])
y L.Map.unproject(point [, zoom])
.
Los mapas web se dividen en una cuadrícula de mosaicos, cada uno con el mismo número de píxeles. A niveles de zoom más altos, el mapa se divide en una mayor cantidad de mosaicos, con una mayor cantidad de píxeles correspondiente. Por lo tanto, el tamaño de píxel del mapa depende del nivel de zoom.
Esto significa que si está jugando con una ventana de demostración de Leaflet en su navegador, la salida de L.Map.project` para un bloqueo dado solo cambiará si acerca y aleja.
A partir de la última versión de Leaflet (0.7.3), la definición de L.Map.latLngToLayerPoint
lecturas:
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
Por el contrario, L.Map.latLngToContainerPoint
lee:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
con L.Map.layerPointToContainerPoint
definido para ser:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
El método de mapa privado _getMapPanePos()
devuelve el desplazamiento entre la posición actual del mapa y su posición cuando se creó por primera vez. Esto solo cambia durante una panorámica del mapa (no durante el zoom), por lo que la diferencia entre el layerPoint y el containerPoint correspondiente a un latlng dado es que el layerPoint es la posición del latlng en el contenedor <div>
del mapa con el mapa en su posición inicial , mientras que containerPoint es la posición actual del latlng en el contenedor del mapa <div>
.
EDITAR: resulta que estaba equivocado. Las coordenadas del contenedor parecen ser para el marco visible, mientras que las coordenadas de la capa son para un área mayor que la visible. Esta pregunta necesita a alguien más informado que yo para responderla.
fuente