Domanda

Sto cercando di trovare le due più vicine strade per un punto con Google Places API (fondamentalmente per indicare l'intersezione più vicina).Tuttavia, qualsiasi risultato che possa riportare solo un "percorso", se non del tutto.

Non ho potuto fare 5 domande + o X modello, ma sporca, inaffidabile, e, naturalmente, sarà colpito il limite di query molto prima.

Io sono tentato di dire che questo è un deliberato muoversi perché le API non è destinato a essere utilizzato per qualcosa come sistemi di navigazione (che non sto cercando di fare), ma ho ancora speranza, c'è una TOS-conforme modo per ottenere il punto di intersezione.

Nota a margine, sembra specificando i tipi "=percorso" non restituisce alcun risultato, un ulteriore nolsters il mio sospetto che Posti è veramente inteso per essere utilizzato per effettivo di poi, non per la navigazione, anche se il termini di servizio non mi parlare di eventuali esplicite restrizioni in merito.

EDIT:Come Chris ha sottolineato, c'è il Geocoding API che è specificamente progettato per il geocoding, ma io ancora non vedo un modo per ottenere più vicino attraversare la strada, oltre che attraverso il più query.

È stato utile?

Soluzione

Il consenso è che Google reverse geocoder non è abbastanza sofisticato per segnalare intersezioni in una query.Che è, non c'è un parametro che è possibile utilizzare per dire loro che si desidera solo i risultati con "types" : [ "intersection" ].Google sta mangiando il proprio cibo qui;se si immette un lat/lon, in una mappa.casella di ricerca di google, si ottiene sempre una strada (in Google gergo, un "percorso") indietro.

Come dici tu, ci sono un sacco di euristica è possibile applicare per ottenere l'ambita ["intersection"] tipo.

ad es.Più "importanti" incroci di 1 ° città del mondo hanno fermate dei mezzi pubblici che descrivono l'incrocio.Se tutti i risultati sono un "types" : [ "bus_station", "transit_station" ] elemento, si può provare il "long_name" un elemento come termine di ricerca, e spero che si ottiene un incrocio.smirkingman anche parlato di una soluzione praticabile.Entrambe queste richieste 2+ query, ahimè.

In conclusione, non c'è latelngToIntersection(lat,lng) tipo di funzione in Google Geocoding API.La prova di questo esiste in Google maps.pagina di google.Io attacco il tuo problema in modo diverso.Se si desidera ottenere il più vicino incrocio importante dato una posizione di GPS, può aiutare ad ottenere l'aiuto.Geocoding è notoriamente piena di icky umanità.

Altri suggerimenti

Geonames fornisce un'API di geocodifica per l'intersezione più vicina da coordinate di latitudine / longitudine.

http://www.geonames.org/maps/us-reverse-geocoder.html#findnearstintectection

La risposta JSON è simile a questa:

{"intersection":
 {"adminName2":"San Mateo",
  "street2":"Curtis St",
  "postalcode":"94025",
  "street1":"Roble Ave",
  "adminCode1":"CA",
  "distance":"0.08",
  "countryCode":"US",
  "lng":"-122.180842",
  "placename":"Menlo Park",
  "lat":"37.450649",
  "adminName1":"California"
 },
 "credits":"1.0"
}
.

street1 e street2 sono le strade cross.

È possibile utilizzare i dati da openstreetmap .Il loro file .osm fornisce la lat / lungo delle strade intersecanti.

    .
  1. Come ottenere i dati.

      .
    1. Vai a OpenStreetMap e trova il tuo posto dove sei interessato, ingrandire Likeil quarto segno di spunta.

    2. Fare clic su Esporta sulla barra NAV superiore, sul menu a discesa, premere "OpenStreetMap XML Data" e fare clic su "Esporta".

    3. Per un sacco di dati come uno stato o un paese, Planet.osm e trova un "estratto" desiderato.

    4. Per ottenere le intersezioni, si desidera cercare i dati che corrispondono a questo formato, probabilmente cerca l'autostrada.

      Esempio:

      <way id="6419265" user="eric22" uid="160949" visible="true" version="2" changeset="10632563" timestamp="2012-02-09T10:49:21Z">
        <nd ref="53167978"/>
        <nd ref="53163978"/>
        <nd ref="53163979"/>
        <nd ref="53173508"/>
        <nd ref="53164158"/>
        <nd ref="53173510"/>
        <tag <b>k="highway"</b> v="residential"/>
        <tag k="name" v="Alberta St"/>
        <tag k="tiger:cfcc" v="A41"/>
        <tag k="tiger:county" v="St. Louis-City, MO"/>
        ...
      </way>
      
      .

      the way.id è l'ID della strada, un ND Ref sono ID Streets puoi trovare nello stesso file.Sembrano qualcosa come questo

      ‹node id="53167978" lat="38.5852785" lon="-90.2450074" user="eric22" uid="160949" visible="true" version="3" changeset="10632563" timestamp="2012-02-09T10:48:49Z"/>
      
      .

Sei corretto, i luoghi API non è destinata ad essere utilizzata per il geocoding.I risultati politici come le strade e le città sono limitati a soli 2 risultati poiché sono solo lì per fornire un'identità dell'area per i luoghi restituiti.

Se desideri cercare strade, ecc. Prova a utilizzare l'API di geocodifica: https://developers.google.com/maps/Documentation/Geocoding/

Come discusso, non esiste una struttura Googlemap per invertire il geocodo e ottenere un set di punti ravvicinati.

L'unica alternativa che vedo è

    .
  • Calcola 200 metri N / S / E / W del punto con Haversine.Dovrai scegliere '200' empiricamente
  • Reverse-geocode quei 4 punti
  • Dai indirizzi restituiti, prendi le 2 strade più vicine diverse (potrebbero non avere successo)

    Se si esegue questo lato client, i tuoi utenti raramente vengono eseguiti nel limite giornaliero 2'500.

API di Google Maps non supporta questo.È solo un geocoder indirizzo.Il meglio che puoi fare con Google Maps API è l'utente il servizio dei loro indicazioni per trovare dove è il primo turno, ma è un hack totale.Potresti voler provare a cercare altri servizi di mappe che possono offrire questa abilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top