2017-05-03 4 views
-1

Je suis nouveau au javascript et ai été bloqué au géocode, j'essaye d'obtenir l'emplacement actuel et obtiens son placeid avec le géocode, si j'ai des nombres de passe au lat lang cela fonctionne bien sinon il donne l'alerte le géocodeur a échoué en raison de ZERO_RESULTS, le code ci-dessous fonctionne très bienGeocoder a échoué en raison de ZERO_RESULTS

var currentLatitude= 23.2147721; 
var currentLongitude =72.6446714; 
    function initialize() { 
     var geocoder = new google.maps.Geocoder; 

     var latlng = { 
      lat : currentLatitude, 
      lng : currentLongitude 

     }; 
     console.log("Geocoder" + latlng); 
     geocoder.geocode({ 
      'location' : latlng 
     }, function(results, status) { 
      if (status === google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        console.log(results[1].place_id); 
       } else { 
        window.alert('No results found'); 
       } 
      } else { 
       window.alert('Geocoder failed due to: ' + status); 
       q 
      } 
     }); 
    }; 

Le code ci-dessous montre l'erreur.

var currentLatitude,currentLongitude; 
if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function(position){ 
     currentLatitude = parseFloat(position.coords.latitude); 
     currentLongitude = parseFloat(position.coords.longitude); 

      console.log("Latitude:"+currentLatitude+"Longitude:"+currentLongitude); 

     }); 
    } else { 
     console.log("Geolocation is not supported by this browser."); 
    } 

function initialize() { 
     var geocoder = new google.maps.Geocoder; 

     var latlng = { 
      lat : currentLatitude, 
      lng :currentLongitude 

     }; 
     console.log("Geocoder" + latlng); 
     geocoder.geocode({ 
      'location' : latlng 
     }, function(results, status) { 
      if (status === google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        console.log(results[1].place_id); 
       } else { 
        window.alert('No results found'); 
       } 
      } else { 
       window.alert('Geocoder failed due to: ' + status); 

      } 
     }); 
    }; 

src que je l'ai utilisé est

<script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=YOURKEYHERE&callback=initialize"> 
+0

toute aide est appréciée –

Répondre

3

D'abord, il y a un désordre dans votre code, mais je vais essayer de vous aider.

navigator.geolocation.getCurrentPosition est une fonction asynchrone, vous devez attendre que cette fonction se termine avant de créer une autre requête de géocodage.

et qui est responsable de l'appel de la fonction initialize après le chargement de la page? Je suis assez sûr que la partie:

geocoder.geocode({ 
    'location' : latlng 
} 

doit être à l'intérieur du rappel getCurrentPosition.

De plus jeter un oeil dans l'API géocodage inversé:

https://developers.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding

+0

Merci son travail. –