Changeset 96524 in spip-zone


Ignore:
Timestamp:
Apr 7, 2016, 8:43:07 PM (5 years ago)
Author:
kent1@…
Message:

gérer correctement les cas où photon ne trouve rien

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/trunk/javascript/gis_geocoder.js

    r96518 r96524  
    8888                        return_location.locality = return_location.region = return_location.country  = '';
    8989                        if(geocoder_server == 'photon'){
    90                                 place = response.features[0];
    91                                 var street_components = [];
    92                                
    93                                 if (place.properties.country) {
    94                                         return_location.country = place.properties.country;
     90                                if(!response.features.length || response.features.length == 0){
     91                                        return_location.error = 'not found';
    9592                                }
    96                                 if (place.properties.country_code) {
    97                                         return_location.country_code = place.properties.country_code;
     93                                else{
     94                                        place = response.features[0];
     95                                        var street_components = [];
     96                                       
     97                                        if (place.properties.country) {
     98                                                return_location.country = place.properties.country;
     99                                        }
     100                                        if (place.properties.country_code) {
     101                                                return_location.country_code = place.properties.country_code;
     102                                        }
     103                                        if (place.properties.state) {
     104                                                return_location.region = place.properties.state;
     105                                        }
     106                                        if (place.properties.city) {
     107                                                return_location.locality = place.properties.city;
     108                                        } else if (place.properties.town) {
     109                                                return_location.locality = place.properties.town;
     110                                        } else if (place.properties.village) {
     111                                                return_location.locality = place.properties.village;
     112                                        }else if(place.properties.osm_key == 'place' && (place.properties.osm_value == 'city' || place.properties.osm_value == 'village')){
     113                                                return_location.locality = place.properties.name;
     114                                        } else if (place.properties.county) {
     115                                                street_components.push(place.properties.county);
     116                                        }
     117                                        if (place.properties.postcode) {
     118                                                return_location.postcode = place.properties.postcode;
     119                                        }
     120                                        if (place.properties.street) {
     121                                                street_components.push(place.properties.street);
     122                                        }
     123                                        else if (place.properties.road) {
     124                                                street_components.push(place.properties.road);
     125                                        } else if (place.properties.pedestrian) {
     126                                                street_components.push(place.properties.pedestrian);
     127                                        }
     128                                        if (place.properties.housenumber) {
     129                                                street_components.unshift(place.properties.housenumber);
     130                                        }
     131                                        if (return_location.street === '' && street_components.length > 0) {
     132                                                return_location.street = street_components.join(' ');
     133                                        }
     134                                        place.lat = place.geometry.coordinates[1];
     135                                        place.lon = place.geometry.coordinates[0];
     136                                        return_location.point = new L.LatLng(place.lat, place.lon);
    98137                                }
    99                                 if (place.properties.state) {
    100                                         return_location.region = place.properties.state;
    101                                 }
    102                                 if (place.properties.city) {
    103                                         return_location.locality = place.properties.city;
    104                                 } else if (place.properties.town) {
    105                                         return_location.locality = place.properties.town;
    106                                 } else if (place.properties.village) {
    107                                         return_location.locality = place.properties.village;
    108                                 }else if(place.properties.osm_key == 'place' && (place.properties.osm_value == 'city' || place.properties.osm_value == 'village')){
    109                                         return_location.locality = place.properties.name;
    110                                 } else if (place.properties.county) {
    111                                         street_components.push(place.properties.county);
    112                                 }
    113                                 if (place.properties.postcode) {
    114                                         return_location.postcode = place.properties.postcode;
    115                                 }
    116                                 if (place.properties.street) {
    117                                         street_components.push(place.properties.street);
    118                                 }
    119                                 else if (place.properties.road) {
    120                                         street_components.push(place.properties.road);
    121                                 } else if (place.properties.pedestrian) {
    122                                         street_components.push(place.properties.pedestrian);
    123                                 }
    124                                 if (place.properties.housenumber) {
    125                                         street_components.unshift(place.properties.housenumber);
    126                                 }
    127                                 if (return_location.street === '' && street_components.length > 0) {
    128                                         return_location.street = street_components.join(' ');
    129                                 }
    130                                 place.lat = place.geometry.coordinates[1];
    131                                 place.lon = place.geometry.coordinates[0];
    132138                        }
    133139                        else{
     
    172178                                        return_location.street = street_components.join(' ');
    173179                                }
     180                                return_location.point = new L.LatLng(place.lat, place.lon);
    174181                        }
    175                         return_location.point = new L.LatLng(place.lat, place.lon);
    176182                }
    177183                this._user_callback(return_location);
Note: See TracChangeset for help on using the changeset viewer.