Changeset 82589 in spip-zone


Ignore:
Timestamp:
May 19, 2014, 7:14:25 PM (5 years ago)
Author:
brunobergot@…
Message:

utiliser la syntaxe courte de Leaflet + fixes jshint

File:
1 edited

Legend:

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

    r81630 r82589  
    44
    55gis_init_map = function(mapcfg) {
    6         var map_container = mapcfg["mapid"];
     6        var map_container = mapcfg.mapid;
    77
    88        // Création de la carte Leafleat
    9         var map = new L.Map(map_container,{
    10                 scrollWheelZoom: mapcfg["scrollWheelZoom"],
    11                 zoomControl: mapcfg["zoomControl"],
    12                 maxZoom: mapcfg["maxZoom"],
    13                 minZoom: mapcfg["minZoom"]
     9        var map = L.map(map_container,{
     10                scrollWheelZoom: mapcfg.scrollWheelZoom,
     11                zoomControl: mapcfg.zoomControl,
     12                maxZoom: mapcfg.maxZoom,
     13                minZoom: mapcfg.minZoom
    1414        });
    1515        // affecter sur la globale homonyme a mapid/map_container (compat ascendante)
     
    2020        // Appeler l'éventuelle fonction de callback et trigger "load"
    2121        map.on('load',function(e){
    22                 if (mapcfg["callback"] && typeof(mapcfg["callback"]) === "function") {
    23                         var callback = mapcfg["callback"];
     22                if (mapcfg.callback && typeof(mapcfg.callback) === "function") {
     23                        var callback = mapcfg.callback;
    2424                        callback(e.target);
    2525                }
     
    2828
    2929        // Déterminer la position initiale de la carte
    30         if (!mapcfg['utiliser_bb']){
    31                 map.setView(new L.LatLng(mapcfg['lat'], mapcfg['lon']), mapcfg['zoom']);
     30        if (!mapcfg.utiliser_bb){
     31                map.setView([mapcfg.lat, mapcfg.lon], mapcfg.zoom);
    3232        }
    3333        else {
    3434                map.fitBounds(
    35                         new L.LatLngBounds(
    36                                 new L.LatLng(mapcfg['sw_lat'], mapcfg['sw_lon']),
    37                                 new L.LatLng(mapcfg['ne_lat'], mapcfg['ne_lon'])
     35                        L.latLngBounds(
     36                                [mapcfg.sw_lat, mapcfg.sw_lon],
     37                                [mapcfg.ne_lat, mapcfg.ne_lon]
    3838                        )
    3939                );
    4040        }
    4141
    42         var get_layer=function(name){
     42        var get_layer = function(name){
    4343                var layer;
    44                 if (typeof mapcfg['layers'][name]!=="undefined")
    45                 eval("layer=new "+ mapcfg['layers'][name]["layer"]+";");
     44                if (typeof mapcfg.layers[name]!=="undefined")
     45                eval("layer=new "+ mapcfg.layers[name].layer+";");
    4646                return layer;
    47         }
     47        };
    4848
    4949        // Fond de carte par défaut (layer)
    50         var default_layer = get_layer(mapcfg['default_layer']);
     50        var default_layer = get_layer(mapcfg.default_layer);
    5151        map.addLayer(default_layer);
    5252
    53         if (mapcfg['control_type'] && !mapcfg['no_control'] && mapcfg['affiche_layers'].length>1){
    54                 var layers_control = new L.Control.Layers('','',{collapsed: mapcfg['control_type_collapsed'] ? true : false});
    55                 layers_control.addBaseLayer(default_layer,mapcfg['layers'][mapcfg['default_layer']]["nom"]);
    56                 for(var l in mapcfg['affiche_layers']){
    57                         if (mapcfg['affiche_layers'][l]!==mapcfg['default_layer']){
    58                                 var layer = get_layer(mapcfg['affiche_layers'][l]);
     53        if (mapcfg.control_type && !mapcfg.no_control && mapcfg.affiche_layers.length>1){
     54                var layers_control = L.control.layers('','',{collapsed: mapcfg.control_type_collapsed ? true : false});
     55                layers_control.addBaseLayer(default_layer,mapcfg.layers[mapcfg.default_layer].nom);
     56                for(var l in mapcfg.affiche_layers){
     57                        if (mapcfg.affiche_layers[l] !== mapcfg.default_layer){
     58                                var layer = get_layer(mapcfg.affiche_layers[l]);
    5959                                if (typeof layer!=="undefined")
    60                                         layers_control.addBaseLayer(layer,mapcfg['layers'][mapcfg['affiche_layers'][l]]["nom"]);
     60                                        layers_control.addBaseLayer(layer,mapcfg.layers[mapcfg.affiche_layers[l]].nom);
    6161                        }
    6262                }
     
    7272
    7373        // Ajout des contrôles de la carte
    74         if (!mapcfg['no_control']){
    75                 if (mapcfg['scale'])
    76                         map.addControl(new L.Control.Scale());
    77                 if (mapcfg['fullscreen'])
    78                         map.addControl(new L.Control.FullScreen());
    79                 if (mapcfg['overview']){
    80                         var minimap_layer = get_layer(mapcfg['default_layer']);
    81                         var miniMap = new L.Control.MiniMap(minimap_layer,{width: 100,height: 100, toggleDisplay: true}).addTo(map);
     74        if (!mapcfg.no_control){
     75                if (mapcfg.scale)
     76                        map.addControl(L.control.scale());
     77                if (mapcfg.fullscreen)
     78                        map.addControl(L.control.fullScreen());
     79                if (mapcfg.overview){
     80                        var minimap_layer = get_layer(mapcfg.default_layer);
     81                        var miniMap = L.control.minimap(minimap_layer,{width: 100,height: 100, toggleDisplay: true}).addTo(map);
    8282                }
    8383        }
     
    8989                        icon_options = {
    9090                                'iconUrl': feature.properties.icon,
    91                                 'iconSize': new L.Point( feature.properties.icon_size[0], feature.properties.icon_size[1] ),
    92                                 'iconAnchor': new L.Point( feature.properties.icon_anchor[0], feature.properties.icon_anchor[1] )
     91                                'iconSize': [feature.properties.icon_size[0], feature.properties.icon_size[1]],
     92                                'iconAnchor': [feature.properties.icon_anchor[0], feature.properties.icon_anchor[1]]
    9393                        };
    9494                        if (feature.properties.popup_anchor)
    95                                 icon_options.popupAnchor = new L.Point( feature.properties.popup_anchor[0], feature.properties.popup_anchor[1] );
     95                                icon_options.popupAnchor = [feature.properties.popup_anchor[0], feature.properties.popup_anchor[1]];
    9696                        if (feature.properties.shadow)
    9797                                icon_options.shadowUrl = feature.properties.shadow;
    9898                        if (feature.properties.shadow_size)
    99                                 icon_options.shadowSize = new L.Point( feature.properties.shadow_size[0], feature.properties.shadow_size[1] );
    100                         layer.setIcon(new L.Icon(icon_options));
    101                 }
    102         }
     99                                icon_options.shadowSize = [feature.properties.shadow_size[0], feature.properties.shadow_size[1]];
     100                        layer.setIcon(L.icon(icon_options));
     101                }
     102        };
    103103
    104104        // API setGeoJsonFeaturePopup : Pour Ajouter le texte de popup d'un point (feature = item d'un GeoJson)
     
    116116                        layer.bindPopup(popupContent,popupOptions);
    117117                }
    118         }
     118        };
    119119
    120120        /*
     
    126126        */
    127127        // API parseGeoJson
    128         if (!mapcfg['cluster']){
     128        if (!mapcfg.cluster){
    129129                // Analyse des points et déclaration (sans regroupement des points en cluster)
    130130                map.parseGeoJson = function(data) {
    131131                        if (data.features.length > 0) {
    132                                 var geojson = new L.geoJson('', {
    133                                         style: mapcfg['path_styles'],
     132                                var geojson = L.geoJson('', {
     133                                        style: mapcfg.path_styles,
    134134                                        onEachFeature: function (feature, layer) {
    135135                                                // Déclarer l'icone du point
     
    140140                                }).addTo(map);
    141141                                geojson.addData(data);
    142                                 if (mapcfg['autocenterandzoom']) {
     142                                if (mapcfg.autocenterandzoom) {
    143143                                        if (data.features.length == 1 && data.features[0].geometry.type == 'Point')
    144                                                 map.setView(geojson.getBounds().getCenter(), mapcfg['zoom']);
     144                                                map.setView(geojson.getBounds().getCenter(), mapcfg.zoom);
    145145                                        else
    146146                                                map.fitBounds(geojson.getBounds());
    147147                                }
    148                                 if (mapcfg['open_id'].length)
    149                                         gis_focus_marker(mapcfg['open_id'],map_container.substring(3));
     148                                if (mapcfg.open_id.length)
     149                                        gis_focus_marker(mapcfg.open_id,map_container.substring(3));
    150150
    151151                                if (typeof map.geojsons=="undefined") map.geojsons = [];
    152152                                map.geojsons.push(geojson);
    153153                        }
    154                 }
     154                };
    155155        }
    156156        else {
     
    160160                                showCoverageOnHover:false
    161161                        };
    162                         if (mapcfg["clusterMaxZoom"])
    163                                 options.disableClusteringAtZoom = parseInt(mapcfg["clusterMaxZoom"]);
    164                         if (mapcfg["clusterShowCoverageOnHover"])
    165                                 options.showCoverageOnHover = Boolean(mapcfg["clusterShowCoverageOnHover"]);
    166                         if (mapcfg["maxClusterRadius"])
    167                                 options.maxClusterRadius = parseInt(mapcfg["maxClusterRadius"]);
    168 
    169                         map.markers = new L.MarkerClusterGroup(options);
     162                        if (mapcfg.clusterMaxZoom)
     163                                options.disableClusteringAtZoom = parseInt(mapcfg.clusterMaxZoom);
     164                        if (mapcfg.clusterShowCoverageOnHover)
     165                                options.showCoverageOnHover = Boolean(mapcfg.clusterShowCoverageOnHover);
     166                        if (mapcfg.maxClusterRadius)
     167                                options.maxClusterRadius = parseInt(mapcfg.maxClusterRadius);
     168
     169                        map.markers = L.markerClusterGroup(options);
    170170
    171171                        /* Pour chaque points présents, on crée un marqueur */
    172172                        jQuery.each(data.features, function(i, feature) {
    173173                                if (feature.geometry.coordinates[0]) {
    174                                         var latlng = new L.LatLng(feature.geometry.coordinates[1], feature.geometry.coordinates[0]);
    175                                         var marker = new L.Marker(latlng);
     174                                        var marker = L.marker([feature.geometry.coordinates[1], feature.geometry.coordinates[0]]);
    176175
    177176                                        // Déclarer l'icone du point
     
    187186                        map.addLayer(map.markers);
    188187
    189                         if (mapcfg['autocenterandzoom']) {
     188                        if (mapcfg.autocenterandzoom) {
    190189                                if (data.features.length > 1)
    191190                                        map.fitBounds(map.markers.getBounds());
    192191                                else
    193                                         map.setView(map.markers.getBounds().getCenter(), mapcfg['zoom']);
    194                         }
    195                 }
     192                                        map.setView(map.markers.getBounds().getCenter(), mapcfg.zoom);
     193                        }
     194                };
    196195        }
    197196
    198197        // API Compat Gis3 : addJSON et removeAllMarkers
    199         map.addJSON = map.parseGeoJson
     198        map.addJSON = map.parseGeoJson;
    200199        map.removeAllMarkers = function(){
    201200                if (typeof map.geojsons=="undefined") map.geojsons = [];
    202                 for(i in map.geojsons){
     201                for(var i in map.geojsons){
    203202                        map.geojsons[i].clearLayers();
    204203                        map.removeLayer(map.geojsons[i]);
    205204                }
    206205                map.geojsons = [];
    207         }
    208 
    209         if (mapcfg['affiche_points']
    210                 && typeof(mapcfg['json_points'])!=="undefined"
    211                 && mapcfg['json_points']['url'].length){
     206        };
     207
     208        if (mapcfg.affiche_points
     209                && typeof(mapcfg.json_points) !== "undefined"
     210                && mapcfg.json_points.url.length){
    212211                // Récupération des points à mettre sur la carte, via json externe
    213212                var args = {};
    214                 jQuery.extend(true, args, mapcfg['json_points']['env']);
    215                 if (typeof mapcfg['json_points']['objets']!=="undefined"){
    216                         args["objets"] = mapcfg['json_points']['objets'];
    217                         if (args["objets"]=="point_libre"){
    218                                 args["lat"]=mapcfg['lat'];
    219                                 args["lon"]=mapcfg['lon'];
    220                                 if (typeof mapcfg['json_points']['titre']!=="undefined")
    221                                         args["titre"]= mapcfg['json_points']['titre'];
    222                                 if (typeof mapcfg['json_points']['description']!=="undefined")
    223                                         args["description"]=mapcfg['json_points']['description'];
    224                                 if (typeof mapcfg['json_points']['icone']!=="undefined")
    225                                         args["icone"]=mapcfg['json_points']['icone'];
    226                         }
    227                 }
    228                 if (typeof mapcfg['json_points']['limit']!=="undefined")
    229                         args["limit"] = mapcfg['json_points']['limit'];
    230                 jQuery.getJSON(mapcfg['json_points']['url'],args,
     213                jQuery.extend(true, args, mapcfg.json_points.env);
     214                if (typeof mapcfg.json_points.objets !== "undefined"){
     215                        args.objets = mapcfg.json_points.objets;
     216                        if (args.objets == "point_libre"){
     217                                args.lat = mapcfg.lat;
     218                                args.lon = mapcfg.lon;
     219                                if (typeof mapcfg.json_points.titre !== "undefined")
     220                                        args.titre = mapcfg.json_points.titre;
     221                                if (typeof mapcfg.json_points.description !== "undefined")
     222                                        args.description = mapcfg.json_points.description;
     223                                if (typeof mapcfg.json_points.icone !== "undefined")
     224                                        args.icone = mapcfg.json_points.icone;
     225                        }
     226                }
     227                if (typeof mapcfg.json_points.limit !== "undefined")
     228                        args.limit = mapcfg.json_points.limit;
     229                jQuery.getJSON(mapcfg.json_points.url,args,
    231230                        function(data) {
    232231                                if (data){
     
    239238        }
    240239
    241         if (mapcfg['kml'] && mapcfg['kml'].length){
     240        if (mapcfg.kml && mapcfg.kml.length){
    242241                map.kml = {};
    243                 for(var i in mapcfg['kml']){
    244                         map.kml[i] = new L.KML(mapcfg['kml'][i], {async: true});
    245                         if (mapcfg['centrer_fichier']) {
     242                for(var i in mapcfg.kml){
     243                        map.kml[i] = new L.KML(mapcfg.kml[i], {async: true});
     244                        if (mapcfg.centrer_fichier) {
    246245                                map.kml[i].on("loaded", function(e) { map.fitBounds(e.target.getBounds()); });
    247246                        }
     
    249248                }
    250249        }
    251         if (mapcfg['gpx'] && mapcfg['gpx'].length){
     250        if (mapcfg.gpx && mapcfg.gpx.length){
    252251                map.gpx = {};
    253                 for(var i in mapcfg['gpx']){
    254                         map.gpx[i] = new L.GPX(mapcfg['gpx'][i], {async: true});
    255                         if (mapcfg['centrer_fichier']) {
     252                for(var i in mapcfg.gpx){
     253                        map.gpx[i] = new L.GPX(mapcfg.gpx[i], {async: true});
     254                        if (mapcfg.centrer_fichier) {
    256255                                map.gpx[i].on("loaded", function(e) { map.fitBounds(e.target.getBounds()); });
    257256                        }
     
    259258                }
    260259        }
    261         if (mapcfg['geojson'] && mapcfg['geojson'].length){
    262                 for(var i in mapcfg['geojson']){
    263                         jQuery.getJSON(mapcfg['geojson'][i], function(data){
     260        if (mapcfg.geojson && mapcfg.geojson.length){
     261                for(var i in mapcfg.geojson){
     262                        jQuery.getJSON(mapcfg.geojson[i], function(data){
    264263                                if (data){
    265264                                        map.parseGeoJson(data);
     
    269268        }
    270269
    271         if (mapcfg['localize_visitor']) {
    272                 var maxZoom = mapcfg['localize_visitor_zoom'];
     270        if (mapcfg.localize_visitor) {
     271                var maxZoom = mapcfg.localize_visitor_zoom;
    273272                map.on('locationerror',function(e){
    274                         maxZoom = mapcfg['zoom'];
     273                        maxZoom = mapcfg.zoom;
    275274                        alert(e.message);
    276275                });
     
    280279
    281280        // si pas de points trigger ici
    282         if (!mapcfg['affiche_points'] || !mapcfg['json_points'].length)
     281        if (!mapcfg.affiche_points || !mapcfg.json_points.length)
    283282                jQuery("#"+map_container).trigger('ready',map);
    284 }
     283};
    285284
    286285}());
Note: See TracChangeset for help on using the changeset viewer.