2011-06-07 5 views
0

Lorsque vous appelez le service recherche apiGoogle Maps API Javascript V3: Recherche Demandes

var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); 
var request = { location: pyrmont, radius: '500', types: ['store'] }; 
service = new google.maps.places.PlacesService(map); 
service.search(request, callback);
  1. est-il nécessaire de donner l'emplacement/rayon de la zone de recherche?
  2. Que diriez-vous si je veux rechercher un emplacement dans le monde total pas dans la zone spécifiée comme google fait au http://maps.google.com/.

--- MISE À JOUR ---

Ceci est mon code mis à jour comme conseillé @Trott mais je reçois statut = "ZERO_RESULTS" dans ma fonction de rappel.

var keyword='search placename'; 
var request = { name : keyword, 
bounds : new google.maps.LatLngBounds(
google.maps.LatLng(-89.999999,-179.999999), 
google.maps.LatLng(89.999999,179.999999) 
)}; 
service = new google.maps.places.PlacesService(map); 
service.search(request, callback); 

function callback(results, status) 
{ 
    console.log("status="+status); 
    if (status == google.maps.places.PlacesServiceStatus.OK) 
    { 
     for (var i = 0; i < results.length; i++) 
     console.log(results[i]); 
    } 
} 

Qu'est-ce que je fais mal?

+0

Au moment d'aller, mais très rapidement: Je soupçonne fortement que la recherche Google Adresses « recherche toponyme » viendra vide, surtout compte tenu de la façon clairsemée la base de données Google Adresses est actuellement en cours. Essayez de chercher "musée" et voir si cela obtient des résultats. – Trott

Répondre

4
  1. Les appels à search() doivent contenir soit un emplacement et un rayon, ou bien une limite (comme un objet LatLngBounds). Ceci est documenté au http://code.google.com/apis/maps/documentation/javascript/places.html#place_search_requests.

  2. Vous pouvez voir ce qui se passe si vous spécifiez un LatLngBnds qui couvre le monde entier. Je ne l'ai pas essayé, mais si cela a fonctionné, cela devrait avoir pour effet de fouiller le monde entier sans nécessairement biaiser un endroit particulier.

LatLngBounds est documenté au http://code.google.com/apis/maps/documentation/javascript/reference.html#LatLngBounds. Je pense que vous voulez faire quelque chose comme ceci:

var sw = new google.maps.LatLng(-89.999999,-179.999999); 
var ne = new google.maps.LatLng(89.999999,179.999999); 
var bounds = new google.maps.LatLngBounds(sw,ne); 
+0

Merci @Trott pour votre réponse, j'ai eu votre 2 points mais désolé de dire que vous n'avez pas assez de connaissances sur LatLong pour composer ces limites qui couvriront tout le monde. Peux-tu le faire pour moi? Merci. –

+0

+1 pour votre deuxième point –

+0

OK, j'ai ajouté le code que je ** pense ** devrait créer une limite qui couvre (presque) le monde entier. – Trott