[PLUGINS] +maj gis4
[lhc/web/www.git] / www / plugins / gis / formulaires / configurer_gis.html
index d38bdf2..d612571 100755 (executable)
@@ -7,7 +7,12 @@
 
 <form method="post" action="#ENV{action}"><div>
        #ACTION_FORMULAIRE{#ENV{action}}
-       <ul>
+       <[(#VAL{ul}|saisie_balise_structure_formulaire)] class="editer-groupe">
+               <[(#VAL{li}|saisie_balise_structure_formulaire)] class="rechercher_adresse editer editer_map_config">
+                       <label for="champ_map_config_geocoder"><:gis:label_rechercher_address:></label>
+                       <input type="text" class="text" name="champ_map_config_geocoder" id="champ_map_config_geocoder" value="" />
+                       <a id="map_config_rechercher_geocodage"><:info_rechercher:></a>
+               </[(#VAL{li}|saisie_balise_structure_formulaire)]>
                [(#SAISIE{input,lat,
                        label=<:gis:lat:>,
                        defaut=0,
@@ -77,7 +82,7 @@
                        label=<:gis:cfg_lbl_activer_objets:>,
                        exclus=spip_gis})]
 
-       </ul>
+       </[(#VAL{ul}|saisie_balise_structure_formulaire)]>
 
 
        <p class="boutons">
 </div></form>
 
 <script type="text/javascript">
-<!---
+/*<![CDATA[*/
+
 (function($){
+       var map, map_container = 'map_config', geocoder, marker;
        
-       var maj_inputs = function(map,pos) {
-               var zoom = map.getZoom();
-               $("#champ_lat").val(pos.lat);
-               $("#champ_lon").val(pos.lng);
-               $("#champ_zoom").val(zoom);
+       var maj_inputs = function(map,pos,action) {
+               if(action == 'click'){
+                       var zoom = map.getZoom();
+                       $("#champ_lat").val(pos.lat);
+                       $("#champ_lon").val(pos.lng);
+                       $("#champ_zoom").val(zoom);
+                       annuler_geocoder = 1;
+               }else if(annuler_geocoder != 1){
+                       if(pos.point == 'undefined'){
+                               $('#champ_#ENV{champ_lat,lat}').val(pos.lat);
+                               $('#champ_#ENV{champ_lon,lon}').val(pos.lng);
+                               map.panTo(pos);
+                               marker.setLatLng(pos);
+                       }else{
+                               $('#champ_#ENV{champ_lat,lat}').val(pos.point.lat);
+                               $('#champ_#ENV{champ_lon,lon}').val(pos.point.lng);
+                               map.panTo(pos.point);
+                               marker.setLatLng(pos.point);
+                       }
+               }
        }
        
+       function geocode(query) {
+               if(!query.error)
+                       maj_inputs(map,query,'geocoding');
+               else
+                       alert('<:gis:erreur_geocoder:> '+query.search);
+       }
+
        var init_config = function() {
-               var map;
-               var map_container = 'map_config';
                map = new L.Map(map_container);
                
                map.attributionControl.setPrefix('');
                </B_layers>
 
                map.setView(new L.LatLng(#ENV{lat,0},#ENV{lon,0}),#ENV{zoom,0});
-               
-               var marker = new L.Marker(new L.LatLng(#ENV{lat,0},#ENV{lon,0}));
+
+               marker = new L.Marker(new L.LatLng(#ENV{lat,0},#ENV{lon,0}));
                map.addLayer(marker);
                
+               geocoder = new L.Geocoder(geocode,{acceptLanguage:'#ENV{lang}'});
+               
                // mettre a jour les coordonnees quand on clique la carte
                map.on('click', function(e) {
+                       annuler_geocoder = 0;
                        marker.setLatLng(e.latlng);
                        map.panTo(e.latlng);
-                       maj_inputs(map,e.latlng);
+                       maj_inputs(map,e.latlng,'click');
+               });
+               
+               // geocoder si clic...
+               $('a#map_config_rechercher_geocodage').css("cursor","pointer").click(function(){
+                       var address = $("#champ_map_config_geocoder").val();
+                       annuler_geocoder = 0;
+                       geocoder.geocode(address);
+               });
+               
+               // ne pas soumettre le formulaire si on presse Entree depuis le champ de recherche
+               $('#champ_map_config_geocoder').keypress(function(e){
+                       if (e.which == 13) {
+                               $('a#map_config_rechercher_geocodage').trigger("click");
+                               return false;
+                       }
                });
                
                // mettre à jour le zoom quand on le modifie
                map.on('zoomend', function(e) {
                        $("#champ_zoom").val(e.target._zoom);
                });
-
        }
 
        $(function(){
        });
 
 })(jQuery);
--->
+/*]]>*/
 </script>
 </div>