Folleto: Coordenadas del contenedor vs Coordenadas de la capa?

15

¿Cuál es la diferencia entre el mapa coordenadas del contenedor y coordenadas de la capa ?

De lo que he recopilado, las coordenadas del contenedor del mapa son siempre relativas a la ventana de visualización del mapa, y mientras que las coordenadas de la capa siempre comienzan con los mismos valores que contenedor coords , cambian una vez que el mapa está panorámico.

API que hacen referencia a coordenadas / punto:

pregunta Saad Malik 20.08.2013 - 00:55

2 respuestas

19

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 responsable 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 necesitas es map.layerPointToContainerPoint. Pero estoy de acuerdo en que no hay un método conveniente para obtenerlo de inmediato. así que programando esto para la próxima versión ".

Respuesta larga

Con mayor detalle:

Los métodos de conversión públicos principales en el Folleto, aunque rara vez son utilizados por 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. En niveles de zoom más altos, el mapa se divide en un mayor número de mosaicos, con un número mayor 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ás perdiendo el tiempo con una ventana de demostración de Folletos en tu navegador, la salida de L.Map.project 'para un tiempo determinado solo cambiará si te acercas y alejas .

A partir de la última versión de Leaflet (0.7.3), se lee la definición de L.Map.latLngToLayerPoint :

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 como:

layerPointToContainerPoint: function (point) { 
    return L.point(point).add(this._getMapPanePos());
}

El método del 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 layerPoint y containerPoint correspondiente a un determinado latlng es que layerPoint es la posición del latlng en el contenedor del mapa <div> con el mapa en su posición inicial , mientras que containerPoint es la posición actual del tiempo en el contenedor de mapa <div> .

    
respondido por el Justin Manley 15.07.2014 - 22:10
0

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 más grande que la visible. Esta pregunta necesita a alguien más informado que yo para responderla.

    
respondido por el Alex Leith 20.08.2013 - 02:59

Lea otras preguntas en las etiquetas