Changeset 116107 in spip-zone


Ignore:
Timestamp:
Jul 24, 2019, 7:51:35 AM (3 months ago)
Author:
cedric@…
Message:

Quand on veut centrer la carte il faut toujours utiliser map.fitBounds en lui passant les options, ce qui permet de prendre en compte options.paddingTopLeft ou options.paddingBottomRight ou options.padding dans le centrage de la carte
(quand on a par exemple le haut de la carte partiellement masque et qu'on veut etre sur que le point cible est visible)
function centerAndZoom() qui prend un point ou un bounds en entree et centre dessus en prenant en compte les paddings, avec un zoom (ou un pan si on a un seul point et si panonly=true)

Location:
_plugins_/gis/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/trunk/javascript/gis_utils.js

    r107686 r116107  
    1616                        }
    1717                } else if (((carte._layers[i].feature) && (carte._layers[i].feature.id == id)) || (carte._layers[i].id && carte._layers[i].id == id)) {
    18                         carte.panTo(carte._layers[i].getLatLng());
     18                        carte.centerAndZoom(carte._layers[i].getLatLng(), true);
    1919                        carte._layers[i].openPopup();
    2020                        break;
  • _plugins_/gis/trunk/javascript/leaflet.gis.js

    r115265 r116107  
    201201        },
    202202
     203        // Center and zoom or just pan to bounds/point
     204        centerAndZoom: function (centerOrBounds, panonly=false) {
     205                var map = this;
     206                var options = map.options;
     207                var bounds = new L.LatLngBounds();
     208                bounds.extend(centerOrBounds);
     209                // avoid infinite zoom if bounds focus on a point
     210                if (bounds._northEast.lat == bounds._northEast.lng && bounds._southWest.lat == bounds._southWest.lng) {
     211                        options.maxZoom = options.zoom;
     212                        if (panonly) {
     213                                options.maxZoom = map._zoom;
     214                        }
     215                        bounds._northEast.lat += 0.1;
     216                        bounds._northEast.lng += 0.1;
     217                        bounds._southWest.lat -= 0.1;
     218                        bounds._southWest.lng -= 0.1;
     219                }
     220                map.fitBounds(bounds, options);
     221        },
     222
    203223        // API parseGeoJson
    204224        parseGeoJson: function (data) {
     
    238258
    239259                        if (map.options.autocenterandzoom) {
    240                                 if (data.features.length > 1)
    241                                         map.fitBounds(map.markerCluster.getBounds());
    242                                 else
    243                                         map.setView(map.markerCluster.getBounds().getCenter(), map.options.zoom);
     260                                this.centerAndZoom(map.markerCluster.getBounds());
    244261                        }
    245262                        if (map.options.openId) {
     
    277294
    278295                        if (map.options.autocenterandzoom) {
    279                                 if (data.features.length == 1 && data.features[0].geometry.type == 'Point')
    280                                         map.setView(geojson.getBounds().getCenter(), map.options.zoom);
    281                                 else
    282                                         map.fitBounds(geojson.getBounds());
     296                                this.centerAndZoom(geojson.getBounds());
    283297                        }
    284298                        if (map.options.openId)
  • _plugins_/gis/trunk/paquet.xml

    r116095 r116107  
    22        prefix="gis"
    33        categorie="divers"
    4         version="4.47.1"
     4        version="4.47.2"
    55        schema="2.1.0"
    66        etat="stable"
Note: See TracChangeset for help on using the changeset viewer.