Changeset 96515 in spip-zone
- Timestamp:
- Apr 7, 2016, 1:29:28 PM (5 years ago)
- Location:
- _plugins_/gis/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/gis/trunk/action/gis_geocoder_rechercher.php
r90130 r96515 22 22 $arguments = collecter_requests(array("json_callback", "format", "q", "limit", "addressdetails", "accept-language", "lat", "lon"), array()); 23 23 24 if(!empty($arguments)) { 24 $geocoder = defined('_GIS_GEOCODER') ? _GIS_GEOCODER : 'nominatim'; 25 26 if(!empty($arguments) && in_array($geocoder,array('photon','nominatim'))) { 25 27 header('Content-Type: application/json; charset=UTF-8'); 26 echo recuperer_page("http://nominatim.openstreetmap.org/{$mode}?" . http_build_query($arguments)); 28 if($geocoder == 'photon'){ 29 if(isset($arguments['accept-language'])){ 30 $arguments['lang'] = $arguments['accept-language']; 31 unset($arguments['accept-language']); 32 } 33 if($mode == 'search'){ 34 $mode = ''; 35 } 36 $url = 'http://photon.komoot.de/api/'; 37 } 38 else{ 39 $url = 'http://nominatim.openstreetmap.org/'; 40 } 41 $data = recuperer_page("{$url}{$mode}?" . http_build_query($arguments)); 42 echo $data; 27 43 } 28 44 } -
_plugins_/gis/trunk/javascript/gis_geocoder.js
r91550 r96515 61 61 jsonp: 'json_callback', 62 62 success: this._callback, 63 error:function(e){ 64 /** 65 * Photon me renvoie une erreur à chaque fois 66 */ 67 if(e.statusText == "OK" && e.status == "200"){ 68 this._callback(e.responseText,e.status,e); 69 } 70 }, 63 71 url: url 64 72 }); … … 69 77 if(this.options.search) 70 78 return_location.search = this.options.search; 79 if(typeof response === "string"){ 80 geocoder_server = 'photon'; 81 response = JSON.parse(response); 82 } 71 83 if (((response instanceof Array) && (!response.length)) || ((response instanceof Object) && (response.error))) { 72 84 return_location.error = 'not found'; … … 74 86 return_location.street = return_location.postcode = return_location.postcode = 75 87 return_location.locality = return_location.region = return_location.country = ''; 88 if(geocoder_server == 'photon'){ 89 place = response.features[0]; 90 var street_components = []; 91 92 if (place.properties.country) { 93 return_location.country = place.properties.country; 94 } 95 if (place.properties.country_code) { 96 return_location.country_code = place.properties.country_code; 97 } 98 if (place.properties.state) { 99 return_location.region = place.properties.state; 100 } 101 if (place.properties.city) { 102 return_location.locality = place.properties.city; 103 } else if (place.properties.town) { 104 return_location.locality = place.properties.town; 105 } else if (place.properties.village) { 106 return_location.locality = place.properties.village; 107 }else if(place.properties.osm_key == 'place' && (place.properties.osm_value == 'city' || place.properties.osm_value == 'village')){ 108 return_location.locality = place.properties.name; 109 } else if (place.properties.county) { 110 street_components.push(place.properties.county); 111 } 112 if (place.properties.postcode) { 113 return_location.postcode = place.properties.postcode; 114 } 115 if (place.properties.street) { 116 street_components.push(place.properties.street); 117 } 118 else if (place.properties.road) { 119 street_components.push(place.properties.road); 120 } else if (place.properties.pedestrian) { 121 street_components.push(place.properties.pedestrian); 122 } 123 if (place.properties.housenumber) { 124 street_components.unshift(place.properties.housenumber); 125 } 126 if (return_location.street === '' && street_components.length > 0) { 127 return_location.street = street_components.join(' '); 128 } 129 place.lat = place.geometry.coordinates[1]; 130 place.lon = place.geometry.coordinates[0]; 131 } 132 else{ 133 if (response.length > 0) 134 place = response[0]; 135 else { 136 place = response; 137 } 76 138 77 if (response.length > 0) 78 place = response[0]; 79 else { 80 place = response; 81 } 82 83 var street_components = []; 84 85 if (place.address.country) { 86 return_location.country = place.address.country; 87 } 88 if (place.address.country_code) { 89 return_location.country_code = place.address.country_code; 90 } 91 if (place.address.state) { 92 return_location.region = place.address.state; 93 } 94 /* un jour peut-être... 95 if (place.address.county) { 96 return_location.departement = place.address.county; 97 } 98 */ 99 if (place.address.city) { 100 return_location.locality = place.address.city; 101 } else if (place.address.town) { 102 return_location.locality = place.address.town; 103 } else if (place.address.village) { 104 return_location.locality = place.address.village; 105 } else if (place.address.county) { 106 street_components.push(place.address.county); 107 } 108 if (place.address.postcode) { 109 return_location.postcode = place.address.postcode; 110 } 111 if (place.address.road) { 112 street_components.push(place.address.road); 113 } else if (place.address.pedestrian) { 114 street_components.push(place.address.pedestrian); 115 } 116 if (place.address.house_number) { 117 street_components.unshift(place.address.house_number); 118 } 119 if (return_location.street === '' && street_components.length > 0) { 120 return_location.street = street_components.join(' '); 139 var street_components = []; 140 141 if (place.address.country) { 142 return_location.country = place.address.country; 143 } 144 if (place.address.country_code) { 145 return_location.country_code = place.address.country_code; 146 } 147 if (place.address.state) { 148 return_location.region = place.address.state; 149 } 150 if (place.address.city) { 151 return_location.locality = place.address.city; 152 } else if (place.address.town) { 153 return_location.locality = place.address.town; 154 } else if (place.address.village) { 155 return_location.locality = place.address.village; 156 } else if (place.address.county) { 157 street_components.push(place.address.county); 158 } 159 if (place.address.postcode) { 160 return_location.postcode = place.address.postcode; 161 } 162 if (place.address.road) { 163 street_components.push(place.address.road); 164 } else if (place.address.pedestrian) { 165 street_components.push(place.address.pedestrian); 166 } 167 if (place.address.house_number) { 168 street_components.unshift(place.address.house_number); 169 } 170 if (return_location.street === '' && street_components.length > 0) { 171 return_location.street = street_components.join(' '); 172 } 121 173 } 122 174 return_location.point = new L.LatLng(place.lat, place.lon);
Note: See TracChangeset
for help on using the changeset viewer.