source: plugins_spip/diogene_complements/diogene_geo/prive/inc-diogene_geo_map.html @ 3980

Last change on this file since 3980 was 3980, checked in by b_b, 10 years ago

report de http://zone.spip.org/trac/spip-zone/changeset/40522 et 40523 de gis + un log en moins

File size: 5.4 KB
Line 
1<li style="padding:0" class="editer editer_carte">
2<div id="diogene_map" style="width:100%;height:350px;overflow:hidden"></div>
3<script type="text/javascript">
4        var initMap_form = function(){
5                jQuery("input[name=lat],input[name=lonx]").unbind();
6
7                if (GBrowserIsCompatible()) {
8                        var lat = jQuery("input[name=lat]").val() ? parseFloat(jQuery("input[name=lat]").val()) : #ENV{lat,#CONFIG{geomap/latitude,0.0}};
9                        var long = jQuery("input[name=lonx]").val() ? parseFloat(jQuery("input[name=lonx]").val()) : #ENV{lonx};
10                        var zoom = jQuery("input[name=zoom]").val() ? parseFloat(jQuery("input[name=zoom]").val()) : #ENV{zoom};
11                        var markerplace = new GLatLng(lat,long);
12                        formMap = new GMap2(document.getElementById("diogene_map"));
13                        formMap.addControl(new GLargeMapControl());
14                        formMap.addControl(new GMapTypeControl());
15                        formMap.setCenter(markerplace);
16                        formMap.setZoom(zoom);
17                        [(#CONFIG{gis/geocoding}|oui)
18                        // reverse geocoding
19                        var geocode = function(lat,lonx) {
20                                var geocoder;
21                                geocoder = new GClientGeocoder();
22                                function showAddress(response) {
23                                        if (!response || response.Status.code != 200) {
24                                                return false;
25                                        } else {
26                                                $("#pays,#code_pays,#region,#ville,#code_postal").val("");
27                                                CountryName = '';
28                                                CountryNameCode = '';
29                                                AdministrativeAreaName = '';
30                                                LocalityName = '';
31                                                PostalCodeNumber = '';
32                                                place = response.Placemark[(#VAL{91}|chr)]0[(#VAL{93}|chr)];
33                                                $("#map_adresse").val(place.address);
34                                                if (Country = place.AddressDetails.Country){
35                                                        if (CountryName = Country.CountryName)
36                                                                $("#pays").val(CountryName);
37                                                        if (CountryNameCode = Country.CountryNameCode)
38                                                                $("#code_pays").val(CountryNameCode);
39                                                        if (AdministrativeArea = Country.AdministrativeArea){
40                                                                if (AdministrativeAreaName = AdministrativeArea.AdministrativeAreaName)
41                                                                        $("#region").val(AdministrativeAreaName);
42                                                                if ((SubAdministrativeArea = AdministrativeArea.SubAdministrativeArea) && (Locality = SubAdministrativeArea.Locality)){
43                                                                        if (LocalityName = Locality.LocalityName)
44                                                                                $("#ville").val(LocalityName);
45                                                                        if ((PostalCode = Locality.PostalCode) && (PostalCodeNumber = PostalCode.PostalCodeNumber))
46                                                                                $("#code_postal").val(PostalCodeNumber);
47                                                                }
48                                                        }
49                                                }
50                                        }
51                                }
52                                geocoder.getLocations(new GLatLng(lat,lonx), showAddress);
53                        };]
54
55                        // update des inputs du formulaire
56                        var updateInputs = function(lat,long) {
57                                jQuery("input[name=lat]").val(lat);
58                                jQuery("input[name=lonx]").val(long);
59                                [(#CONFIG{gis/geocoding}|oui)
60                                geocode(lat,long);]
61                        };
62
63                        // creer un marker draggable qui declenche updateInputs
64                        var createMarker = function(lat,long) {
65                                var point = new GPoint(parseFloat(long),parseFloat(lat));
66                                marker = new GMarker(point,{draggable:true});
67                                updateInputs(point.y,point.x);
68                                GEvent.addListener(marker, 'dragend', function(){
69                                        var point = marker.getPoint();
70                                        updateInputs(point.lat(),point.lng());
71                                });
72                                markerplace = marker;
73                                return marker;
74                        };
75
76                        formMap.addOverlay(createMarker(lat,long));
77
78                        GEvent.addListener(formMap, "click", function(overlay, point){
79                                formMap.clearOverlays();
80                                if (point) {
81                                        marker = createMarker(point.lat(),point.lng());
82                                        formMap.addOverlay(marker);
83                                        formMap.panTo(point);
84                                        markerplace = marker;
85                                }
86                        });
87
88                        GEvent.addListener(formMap, "zoomend", function(oldlevel, newlevel){
89                                jQuery("input[name=zoom]").val(newlevel);
90                                point = markerplace.getPoint();
91                                formMap.panTo(new GLatLng(point.lat(),point.lng()));
92                        });
93
94                        jQuery("input[name=lat]").change(function(){
95                                formMap.clearOverlays();
96                                var point = marker.getPoint();
97                                var newpoint = createMarker(jQuery("input[name=lat]").val(),point.lng());
98                                formMap.addOverlay(newpoint);
99                                formMap.panTo(newpoint.getLatLng());
100                        });
101                        jQuery("input[name=lonx]").change(function(){
102                                formMap.clearOverlays();
103                                var point = marker.getPoint();
104                                var newpoint = createMarker(point.lat(),jQuery("input[name=lonx]").val());
105                                formMap.addOverlay(newpoint);
106                                formMap.panTo(newpoint.getLatLng());
107                        });
108                        jQuery("#map_adresse").focus(function(){jQuery(this).val("");});
109                        jQuery("#rechercher").css("cursor","pointer").click(function(){
110                                var adresse = jQuery("#map_adresse").attr("value");
111                                var geocoder = new GClientGeocoder();
112                                if (geocoder) {
113                                        geocoder.getLatLng(adresse, function(point) {
114                                                if (!point) {
115                                                        alert(adresse + " not found");
116                                                } else {
117                                                        formMap.setCenter(point);
118                                                        formMap.clearOverlays();
119                                                        formMap.addOverlay(createMarker(point.lat(),point.lng()));
120                                                        jQuery("input[(#VAL{91}|chr)]name=lat[(#VAL{93}|chr)]").val(point.lat());
121                                                        jQuery("input[(#VAL{91}|chr)]name=lonx[(#VAL{93}|chr)]").val(point.lng());
122                                                        jQuery("input[(#VAL{91}|chr)]name=zoom[(#VAL{93}|chr)]").val(formMap.getZoom());
123                                                }
124                                        });
125                                }
126                                return false;
127                        });
128                        if (jQuery("input[name=non_localisable]").is(':checked'))
129                                jQuery('li.editer_carte, li.rechercher_adresse, li.editer_lat, li.editer_lonx, li.editer_zoom').hide();
130                        jQuery("input[name=non_localisable]").change(function(){
131                                jQuery('li.editer_carte, li.rechercher_adresse, li.editer_lat, li.editer_lonx, li.editer_zoom').toggle();
132                        });
133                } else {
134                        alert("Sorry, the Google Maps API is not compatible with this browser");
135                }
136        }
137        jQuery(document).ready(function(){
138                initMap_form();
139                onAjaxLoad(initMap_form);
140        });
141
142</script>
143</li>
Note: See TracBrowser for help on using the repository browser.