2017-03-25 1 views
0

J'essaie de définir un code postal afin d'obtenir des coordonnées Lat et Longues et de placer un marqueur dessus. Jusqu'à présent, tout va bien.API Google Maps Recherche de codes postaux dans un pays spécifique

Le problème vient quand je donne une entrée de code postal et il finit par faire un marqueur quelque part dans une autre partie du monde.

Ex: type I 2975-435 et je reçois: https://maps.googleapis.com/maps/api/geocode/json?address=2975-435&key=YOURKEY

"formatted_address" : "Balbey Mahallesi, 435. Sk., 07040 Muratpaşa/Antalya, Turquia", 

Et je veux faire de ce code postal ne rechercher au Portugal.

https://maps.googleapis.com/maps/api/geocode/json?address=2975-435+PT De cette façon, je reçois:

"formatted_address" : "2975 Q.ta do Conde, Portugal", 

Exactement ce que je voulais.

Le problème est, comment puis-je faire cela dans le code JS? Voici le code que j'ai jusqu'à présent

function codeAddress() { 
    var lat = ''; 
    var lng = ''; 
    var address = document.getElementById("cp").value; 
    geocoder.geocode({ 'address': address}, 

    function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      lat = results[0].geometry.location.lat(); 
      lng = results[0].geometry.location.lng(); 
      //Just to keep it stored 
      positionArray.push(new google.maps.LatLng(lat,lng)); 
      //Make the marker 
      new google.maps.Marker({ 
       position:new google.maps.LatLng(lat,lng), 
       map:map 
      }); 

     }else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
} 

Merci

Répondre

1

Pour limiter un résultat à certains pays, vous pouvez appliquer un filtrage des composants:

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

Ainsi, votre code JavaScript sera

function codeAddress() { 
    var lat = ''; 
    var lng = ''; 
    var address = document.getElementById("cp").value; 
    geocoder.geocode({ 
     'address': address, 
     componentRestrictions: { 
      country: 'PT' 
     } 
    }, 

    function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      lat = results[0].geometry.location.lat(); 
      lng = results[0].geometry.location.lng(); 
      //Just to keep it stored 
      positionArray.push(new google.maps.LatLng(lat,lng)); 
      //Make the marker 
      new google.maps.Marker({ 
       position:new google.maps.LatLng(lat,lng), 
       map:map 
      }); 

     }else { 
      alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 
} 

Vous pouvez voir un filtrage composant en action en utilisant l'outil de géocodage:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D2975-435%26options%3Dtrue%26in_country%3DPT%26nfw%3D1

Hope it helps!