sigcorporativo-ja / Mapea4

Mapea4
European Union Public License 1.2
22 stars 15 forks source link

Implementar método getFeaturesExtentPromise de M/impl/layer/Vector #402

Open fbma opened 1 year ago

fbma commented 1 year ago

la clase Vector en fachada tiene el método:

calculateMaxExtent() {
    return this.getImpl().getFeaturesExtentPromise(true, this.filter_);
  }

Que las clases de capas vectoriales que heredan de Vector implementan (GeoJSON, KML, etc). Sin embargo, la impl del propio Vector no contiene ese método "getFeaturesExtentPromise". Eso hace que en algunos escenarios se produzcan errores, ya que la capa Draw auxiliar que siempre se añade al mapa es de clase Vector, y falla en esos casos (por ejemplo: un mapa únicamente con una capa clusterizada, sin fondo, al pasar el ratón por los clusters).

Ese método solo tendría que tener en cuenta posibles features que ya contenga, ya que no depende de ningún servicio externo para cargarlos.

fbma commented 1 year ago

Parece que el caso de Cluster es debido a su variable convexHullLayer_, que es de tipo Vector. EL escenario es un mapa con únicamente una capa clusterizada.

fbma commented 1 year ago

A tener en cuenta: en un mapa sin capa base, y una capa clusterizada, la capa convexHullLayer del cluster se añade al mapa en cada nivel de zoom en el que se recalcule.

Cuando se añade una capa a un mapa sin capa base, se recalculan las resoluciones, y eso puede cambiar el nivel de zoom:

https://github.com/sigcorporativo-ja/Mapea4/blob/b7c1c09b221c680ff1cb338e85cef20bdb0e52a6/mapea-js/src/impl/ol/Map.js#L1224

La corrección solicitada en este issue debe venir acvompañada de un control de este escenario ya que, al calcular ahora correctamente el extent de los features de la capa Vector, en el escenario descrito se produciría un cambio de zoom involuntario al añadir la capa convexHullLayer_, que ocurre al pasar el ratón sobre un cluster.