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

Last change on this file since 3714 was 3714, checked in by b_b, 11 years ago

permettre de spécifier à l'upload qu'un média n'est pas localisable

File size: 5.0 KB
Line 
1<li style="padding:0">
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                                                place = response.Placemark[(#VAL{91}|chr)]0[(#VAL{93}|chr)];
27                                                $("#map_adresse").val(place.address);
28                                                if (place.AddressDetails.Accuracy > 0)
29                                                        $("#pays").val(place.AddressDetails.Country.CountryName);
30                                                if (place.AddressDetails.Accuracy > 0)
31                                                        $("#code_pays").val(place.AddressDetails.Country.CountryNameCode);
32                                                if (place.AddressDetails.Accuracy > 1)
33                                                        $("#region").val(place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName);
34                                                if (place.AddressDetails.Accuracy > 3)
35                                                        $("#ville").val(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName);
36                                                if (place.AddressDetails.Accuracy > 5)
37                                                        $("#code_postal").val(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber);
38                                        }
39                                }
40                                geocoder.getLocations(new GLatLng(lat,lonx), showAddress);
41                        };]
42
43                        // update des inputs du formulaire
44                        var updateInputs = function(lat,long) {
45                                jQuery("input[name=lat]").val(lat);
46                                jQuery("input[name=lonx]").val(long);
47                                [(#CONFIG{gis/geocoding}|oui)
48                                geocode(lat,long);]
49                        };
50
51                        // creer un marker draggable qui declenche updateInputs
52                        var createMarker = function(lat,long) {
53                                var point = new GPoint(parseFloat(long),parseFloat(lat));
54                                marker = new GMarker(point,{draggable:true});
55                                updateInputs(point.y,point.x);
56                                GEvent.addListener(marker, 'dragend', function(){
57                                        var point = marker.getPoint();
58                                        updateInputs(point.lat(),point.lng());
59                                });
60                                markerplace = marker;
61                                return marker;
62                        };
63
64                        formMap.addOverlay(createMarker(lat,long));
65
66                        GEvent.addListener(formMap, "click", function(overlay, point){
67                                formMap.clearOverlays();
68                                if (point) {
69                                        marker = createMarker(point.lat(),point.lng());
70                                        formMap.addOverlay(marker);
71                                        formMap.panTo(point);
72                                        markerplace = marker;
73                                }
74                        });
75
76                        GEvent.addListener(formMap, "zoomend", function(oldlevel, newlevel){
77                                jQuery("input[name=zoom]").val(newlevel);
78                                point = markerplace.getPoint();
79                                formMap.panTo(new GLatLng(point.lat(),point.lng()));
80                        });
81
82                        jQuery("input[name=lat]").change(function(){
83                                formMap.clearOverlays();
84                                var point = marker.getPoint();
85                                var newpoint = createMarker(jQuery("input[name=lat]").val(),point.lng());
86                                formMap.addOverlay(newpoint);
87                                formMap.panTo(newpoint.getLatLng());
88                        });
89                        jQuery("input[name=lonx]").change(function(){
90                                formMap.clearOverlays();
91                                var point = marker.getPoint();
92                                var newpoint = createMarker(point.lat(),jQuery("input[name=lonx]").val());
93                                formMap.addOverlay(newpoint);
94                                formMap.panTo(newpoint.getLatLng());
95                        });
96                        jQuery("#map_adresse").focus(function(){jQuery(this).val("");});
97                        if (jQuery("input[name=non_localisable]").is(':checked'))
98                                jQuery('li.editer_lat, li.editer_lonx, li.editer_zoom').hide();
99                        jQuery("input[name=non_localisable]").change(function(){
100                                jQuery('li.editer_lat, li.editer_lonx, li.editer_zoom').toggle();
101                        });
102                        jQuery("#rechercher").css("cursor","pointer").click(function(){
103                                var adresse = jQuery("#map_adresse").attr("value");
104                                var geocoder = new GClientGeocoder();
105                                if (geocoder) {
106                                        geocoder.getLatLng(adresse, function(point) {
107                                                if (!point) {
108                                                        alert(adresse + " not found");
109                                                } else {
110                                                        formMap.setCenter(point);
111                                                        formMap.clearOverlays();
112                                                        formMap.addOverlay(createMarker(point.lat(),point.lng()));
113                                                        jQuery("input[(#VAL{91}|chr)]name=lat[(#VAL{93}|chr)]").val(point.lat());
114                                                        jQuery("input[(#VAL{91}|chr)]name=lonx[(#VAL{93}|chr)]").val(point.lng());
115                                                        jQuery("input[(#VAL{91}|chr)]name=zoom[(#VAL{93}|chr)]").val(formMap.getZoom());
116                                                }
117                                        });
118                                }
119                                return false;
120                        });
121                } else {
122                        alert("Sorry, the Google Maps API is not compatible with this browser");
123                }
124        }
125        jQuery(document).ready(function(){
126                initMap_form();
127                onAjaxLoad(initMap_form);
128        });
129
130</script>
131</li>
Note: See TracBrowser for help on using the repository browser.