[PLUGINS] +maj gis4
[lhc/web/www.git] / www / plugins / gis / saisies / carte.html
index e86d9ec..954486b 100644 (file)
        #SET{init_ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}}
 ]
 
-<li class="pleine_largeur editer editer_[(#ENV{nom})][ (#ENV{li_class})][ saisie_(#ENV{type_saisie})]"[ data-id="(#ENV{id_saisie})"]>
+<[(#VAL{li}|saisie_balise_structure_formulaire)] class="pleine_largeur editer editer_[(#ENV{nom})][ (#ENV{li_class})][ saisie_(#ENV{type_saisie})]"[ data-id="(#ENV{id_saisie})"]>
 #ENV*{inserer_debut}
 <div id="map_[(#ENV{nom})]" name="formMap" class="formMap" style="width: #ENV{largeur,100%}; height: #ENV{hauteur,350px}"></div>
 <script type="text/javascript">
-<!--
-var form_map;
-var annuler_geocoder = 0;
+/*<![CDATA[*/
+var form_map,
+       annuler_geocoder = 0;
 [(#ENV{recherche}|!={non}|oui|et{#CONFIG{gis/geocoder}|oui})
 [(#SET{geocoder,oui})]
 var geocoder;]
 
 (function($){
-       var champ_lat = $('#champ_#ENV{champ_lat,lat}');
-       var champ_lon = $('#champ_#ENV{champ_lon,lon}');
-       var champ_zoom = $('#champ_#ENV{champ_zoom,zoom}');
-       var champ_adresse = $('#champ_#ENV{champ_adresse,adresse}');
-       var champ_code_postal = $('##ENV{champ_code_postal,code_postal}');
-       var champ_ville = $('#champ_#ENV{champ_ville,ville}');
-       var champ_region = $('#champ_#ENV{champ_region,region}');
-       var champ_pays = $('#champ_#ENV{champ_pays,pays}');
-       
        var marker;
-       
+
        var maj_inputs = function(map,data,action) {
                [(#GET{geocoder}|oui)
                if (action != 'geocoding') {
                        var f = geocoder.geocode(data);
                }]
                var zoom = map.getZoom();
+               if(data.lng <= -180) data.lng = data.lng+360
+               else if(data.lng > 180) data.lng = data.lng-360;
                $('#champ_#ENV{champ_zoom,zoom}').val(zoom);
                if(action == 'click'){
                        $('#champ_#ENV{champ_lat,lat}').val(data.lat);
@@ -83,37 +76,47 @@ var geocoder;]
                if (!marker._map)
                        form_map.addLayer(marker);
        }
-       
+
        [(#GET{geocoder}|oui)
        function geocode(query) {
-               $('#champ_#ENV{champ_adresse,adresse}').val(query.street);
-               $('#champ_#ENV{champ_code_postal,code_postal}').val(query.postcode);
-               $('#champ_#ENV{champ_ville,ville}').val(query.locality);
-               $('#champ_#ENV{champ_region,region}').val(query.region);
-               $('#champ_#ENV{champ_pays,pays}').val(query.country);
-               maj_inputs(form_map,query,'geocoding');
+               if(! query.error){
+                       $('#champ_#ENV{champ_adresse,adresse}').val(query.street).change();
+                       $('#champ_#ENV{champ_code_postal,code_postal}').val(query.postcode).change();
+                       $('#champ_#ENV{champ_ville,ville}').val(query.locality).change();
+                       $('#champ_#ENV{champ_departement,departement}').val(query.departement).change();
+                       $('#champ_#ENV{champ_region,region}').val(query.region).change();
+                       $('#champ_#ENV{champ_pays,pays}').val(query.country).change();
+                       $('#champ_#ENV{champ_code_pays,code_pays}').val(query.country_code).change();
+                       maj_inputs(form_map,query,'geocoding');
+               }else{
+                       alert('<:gis:erreur_geocoder:> '+query.search);
+               }
        }]
-       
+
        var init_map = function(callback) {
                // creer la carte
                var map_container = 'map_[(#ENV{nom})]';
                form_map = new L.Map(map_container);
-               
+
+               // affecter sur l'objet du DOM
+               jQuery("#"+map_container).get(0).map=form_map;
+
                // appeler l'éventuelle fonction de callback
                if (callback && typeof(callback) === "function") {
                        form_map.on('load',function(e){
                                callback(e.target);
                        });
                }
+
                form_map.attributionControl.setPrefix('');
-               
+
                marker = new L.Marker(new L.LatLng(#ENV{lat,0}, #ENV{lon,0}), {draggable: true});
-               
+
                //default layer
                #SET{layer_defaut,#REM|gis_layer_defaut} #SET{layers,#EVAL{$GLOBALS['gis_layers']}}
                var [(#GET{layer_defaut})] = [new (#GET{layers}|table_valeur{#GET{layer_defaut}/layer})];
                form_map.addLayer([(#GET{layer_defaut})]);
-               
+
                <B_layers>
                var layers_control = new L.Control.Layers();
                layers_control.addBaseLayer([(#GET{layer_defaut})],["(#GET{layers}|table_valeur{#GET{layer_defaut}/nom})"]);
@@ -127,9 +130,9 @@ var geocoder;]
                // classe noajax sur le layer_control pour éviter l'ajout de hidden par SPIP
                $(layers_control._form).addClass('noajax');
                </B_layers>
-               
+
                [(#GET{utiliser_bb}|non)
-               form_map.setView(new L.LatLng([(#GET{init_lat})], [(#GET{init_lon})]), [(#GET{init_zoom})]); 
+               form_map.setView(new L.LatLng([(#GET{init_lat})], [(#GET{init_lon})]), [(#GET{init_zoom})]);
                ]
                [(#GET{utiliser_bb}|oui)
                form_map.fitBounds(
@@ -143,12 +146,12 @@ var geocoder;]
                form_map.on('load', function(e) {
                        $('#champ_#ENV{champ_lat,lat}').val(e.latlng.lat);
                        $('#champ_#ENV{champ_lon,lon}').val(e.latlng.lon);
-               });             
+               });
                ]
-               
+
                [(#GET{geocoder}|oui)
-               geocoder = new L.Geocoder(geocode);]
-               
+               geocoder = new L.Geocoder(geocode,{acceptLanguage:'#ENV{lang}'});]
+
                [(#REM) Ici on utilise #ENV{lat} et #ENV{lon}, et pas les valeurs
                        d'initialisation #GET{init_lat} et #GET{init_lon} qui sont toujours remplies]
                [(#ENV{lat}|et{#ENV{lon}}|oui)
@@ -160,18 +163,12 @@ var geocoder;]
                                        "id":"#ENV{id_gis,oui}",
                                        "properties": {
                                                "title":[(#ENV{titre,''}|supprimer_numero|json_encode)],
-                                               "description":[(#ENV{descriptif,''}|json_encode)][,(#LOGO_GIS|oui)
-                                               [(#SET{logo_doc,#LOGO_GIS|image_passe_partout{32,32}|image_recadre{32,32}})]
-                                               #SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur}
-                                               #SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur}
-                                               ["icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)],
-                                               "icon_size": \[#GET{icon_w},#GET{icon_h}\],
-                                               "icon_anchor": \[[(#GET{icon_w}|div{2})],[(#GET{icon_h})]\],
-                                               "popup_anchor": \[1,[-(#GET{icon_h}|div{1.2})]\]]
+                                               "description":[(#ENV{descriptif,''}|json_encode)][
+                                               (#LOGO_GIS|gis_icon_properties)]
                                        }
                                }\]
                }
-               
+
                var geojson = new L.geoJson('', {
                        onEachFeature: function (feature, layer) {
                                marker = layer;
@@ -190,26 +187,26 @@ var geocoder;]
                        }
                }).addTo(form_map);
                geojson.addData(data);]
-               
+
                // mettre a jour les coordonnees quand on clique la carte
                form_map.on('click', function(e) {
                        annuler_geocoder = 0;
                        maj_inputs(form_map,e.latlng,'click');
                });
-               
+
                marker.on("dragend", function(e){
                        maj_inputs(form_map,e.target._latlng,'click');
                });
-               
+
                // mettre à jour le zoom quand on le modifie
                form_map.on('zoomend', function(e) {
                        $('#champ_#ENV{champ_zoom,zoom}').val(e.target._zoom);
                });
-               
+
                [(#GET{geocoder}|oui)
                // geocoder si clic...
                $('a##ENV{nom}_rechercher_geocodage').css("cursor","pointer").click(function(){
-                       var address = $("#champ_#ENV{nom}_geocoder").attr("value");
+                       var address = $("#champ_#ENV{nom}_geocoder").val();
                        annuler_geocoder = 0;
                        geocoder.geocode(address);
                });
@@ -221,10 +218,10 @@ var geocoder;]
                                return false;
                        }
                });]
-               
+
                [(#ENV{id_gis}|non|ou{#ENV{id_gis}|=={oui}}|et{#CONFIG{gis/geolocaliser_user_html5}|=={on}}|oui)
                form_map.locate({setView: true, maxZoom: [(#GET{init_zoom})]});]
-               
+
        };
 
        $(function(){
@@ -236,15 +233,15 @@ var geocoder;]
                        }
                });
        });
-       
+
 })(jQuery);
--->
+/*]]>*/
 </script>
 #ENV*{inserer_fin}
-</li>
+</[(#VAL{li}|saisie_balise_structure_formulaire)]>
 [(#GET{geocoder}|oui)
-<li class="rechercher_adresse editer_[(#ENV{nom})]">
+<[(#VAL{li}|saisie_balise_structure_formulaire)] class="rechercher_adresse editer editer_[(#ENV{nom})]">
        <label for="champ_#ENV{nom}_geocoder"><:gis:label_rechercher_address:></label>
        <input type="text" class="text" name="champ_#ENV{nom}_geocoder" id="champ_#ENV{nom}_geocoder" value="" />
        <a id="#ENV{nom}_rechercher_geocodage"><:info_rechercher:></a>
-</li>]
+</[(#VAL{li}|saisie_balise_structure_formulaire)]>]