Loading [MathJax]/jax/element/mml/optable/MathOperators.js

1 votos

Se han ido las características de la elaboración de folletos al alejar el zoom

Estoy pensando en una opción para hacer invisibles todas o al menos la mayoría de los marcadores de posición (dependiendo de su configuración interna de zoom) al hacer zoom hacia afuera.

Puede ser algo alternativo a los grupos de marcadores de hojas:

https://github.com/Leaflet/Leaflet.markercluster

donde los marcadores de posición se agrupan a medida que nos alejamos.

Mi objetivo es hacer que desaparezcan por completo cuando mi nivel de zoom disminuya. Si no sabes a qué me refiero, puedes abrir algunos mapas de teselas, por ejemplo, OpenstreetMap o Google. Con un nivel de zoom 1, tienes un mapa en blanco, mientras que si aumenta el nivel de zoom, van apareciendo nuevas características. Los detalles del mapa de teselas de Google desaparecen al hacer zoom hacia afuera

Sin embargo, no sé por qué esta actitud no se aplica a los marcadores u otras características creadas por un usuario. Esto se aplica tanto a Google, Google Earth, Leaflet y otras herramientas de mapas interactivos.

Esta situación también se aplica a los polígonos, aunque debido a sus características cuadradas, tienden a ser más pequeños al hacer zoom hacia afuera.

Mis propias características no desaparecen al hacer zoom hacia afuera

¿Hay alguna manera de hacer que desaparezcan, al menos en el software de mapas Leaflet? generar una situación opuesta como la siguiente:

Las características desaparecen de Leaflet después de hacer zoom

2voto

Khalid Puerto Puntos 29

Me parece que encontré una solución:

Un ejemplo está basado aquí:

https://stackoverflow.com/questions/19658564/leaflet-control-geojson-layers-by-zoom-level

y también aquí

Load or display differents geojson data on zoom level for leaflet maps

lo cual lleva al ejemplo en vivo aquí:

http://jsfiddle.net/expedio/kuovyw8m/

con respecto a mi código me gustaría mostrar el fragmento a continuación:

  map.on('zoomend', function (e) {
   zoom_based_layerchange();
  });

   function clean_map() {
     map.eachLayer(function (layer) {
    if (layer instanceof L.GeoJSON)
    {
        map.removeLayer(layer);
    }
    //console.log(layer);
});
  }

     function zoom_based_layerchange() {
//console.log(map.getZoom());

    var currentZoom = map.getZoom();
       switch (currentZoom) {
    case 8:     //se refiere al nivel de zoom: 8
        clean_map();
        sitis.addTo(map); //mostrar la capa geoJSON "sitis"
        break;
    case 12:
        //clean_map(); - eliminado, ya que no necesito quitar la capa visible en un nivel de zoom más bajo
        church.addTo(map);   //mostrar la capa geoJSON "church"
        break;
    default:
        // no hacer nada
        break;
}
   }

0voto

Khalid Puerto Puntos 29

Debido a que la consulta anterior no resuelve el problema al 100% (al menos una capa es visible hasta el nivel 1z y cambian entre sí), me gustaría presentar otra solución, que debería funcionar, incluso para múltiples capas geoJSON:

 map.on('zoomend', function() {
   if (map.getZoom() <6){
        map.removeLayer(job);//1ª capa geoJSON
    }else{
      map.addLayer(job);
       }
    if (map.getZoom() <7){
        map.removeLayer(job2); //2ª capa geoJSON
    }else{
    map.addLayer(job2);
    }
    if (map.getZoom() <8){
        map.removeLayer(job3); //3ª capa geoJSON
    }else{
    map.addLayer(job3);
    }
 });

Esta es la explicación válida si queremos que cada capa se active en un nivel de zoom separado (lo que se cree que es deseado para la mayoría de nosotros).

La forma más corta puede ser la siguiente:

 map.on('zoomend', function() {
    if (map.getZoom() <6){
        map.removeLayer(job);//1ª capa geoJSON
   }
   if (map.getZoom() <8){
        map.removeLayer(job2);//2ª capa geoJSON
   }
   if (map.getZoom() <10){
        map.removeLayer(job3);//3ª capa geoJSON
   }
   else {
        map.addLayer(job);
        map.addLayer(job2);
        map.addLayer(job3);
    } //todas las capas se activan cuando el nivel de zoom alcanza 10
   });

¡Pero todas las capas volverán a aparecer cuando se alcance el nivel de zoom máximo establecido en la función! Puede ser bastante incómodo entonces.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X