2012-12-21 7 views
5

Ho questa funzione per restituire suggerimenti di indirizzo bing in base a un indirizzo inserito dall'utente. Sto già specificando UserLocation, ma i risultati non sono così accurati come immagino dovrebbero essere. C'è qualcosa in più che dovrei fare qui? Posso specificare manualmente lo stato o il codice postale se necessario, ma preferirei evitare di eseguire l'elaborazione post.Come posso filtrare i risultati dell'API di ubicazione di Bing in base alla posizione dell'utente per il completamento automatico?

Ad esempio, la digitazione 111 restituisce risultati da 111, NY, 111 Svezia, 111 Danimarca. Vorrei limitarlo solo agli Stati Uniti, e solo in alcuni stati che posso hardcode. Quando specificherò manualmente le opzioni per postalCode nei dati, sovrascrive ciò che ho usato nella query.

var geolocate = function(options) { 
    $.ajax({ 
     url: "http://dev.virtualearth.net/REST/v1/Locations", 
     dataType: "jsonp", 
     data: { 
      key: "KEY", 
      q: options.address, 
      userLocation: options.latitude + ',' + options.longitude, 
      maxResults: options.maxResults, 
     }, 
     jsonp: "jsonp", 
     success: function(data) { 
      if (options.success instanceof Function) { 
       options.success(data); 
      } 
     }, 
     error: function(xhr, status, text) { 
      alert('ERROR:\n'); 
     } 
    }); 
}; 

risposta

1

Come si è visto, questo sarà effettivamente fare quello che volevo (A meno che il test non dimostri il contrario) mi è stato specificando l'indirizzo di un unico parametro, q, ma se a specificare linea indirizzo in combinazione con userLocation, esso filtra i risultati come previsto.

var geolocate = function(options) { 
    $.ajax({ 
     url: "http://dev.virtualearth.net/REST/v1/Locations", 
     dataType: "jsonp", 
     data: { 
      key: "KEY", 
      addressLine: options.address, 
      countryRegion: 'US', 
      userLocation: options.latitude + ',' + options.longitude, 
      maxResults: options.maxResults, 
     }, 
     jsonp: "jsonp", 
     success: function(data) { 
      if (options.success instanceof Function) { 
       options.success(data); 
      } 
     }, 
     error: function(xhr, status, text) { 
      alert('ERROR:\n\n'); 
     } 
    }); 
}; 
0

Io non sono molto familiare con l'API di Bing Maps al di là di alcuni ritocchi che ho fatto qualche tempo fa ... ma avete provato passando l'ip o comprendente località? Potrebbe essere necessario invertire la ricerca degli utenti Lat/Lng per ottenere il nome di una città ... perché non estrapolare tali informazioni da UserLocation è al di là di me però.

http://msdn.microsoft.com/en-us/library/ff701714.aspx

+0

Ho sfortunatamente, sia l'IP che la posizione utente non sembrano ridurre drasticamente i risultati. Devo escludere i risultati tutti insieme, specialmente quelli fuori dagli Stati Uniti. – AceoStar

Problemi correlati