2010-10-13 18 views
8

Sono riuscito a ottenere una mappa statica google che mostrava un percorso tra 2 coordinate.google map disegno statico "route" anziché linea retta

Il problema è che il percorso disegnato è solo una linea retta tra i 2 punti.

Ho letto che per essere in grado di disegnare il "percorso" tra 2 punti su una mappa google statica, come in, seguendo le strade e la geografia della città invece della linea retta, ho bisogno di aggiungere tutte le coordinate/incroci per il sentiero.

Qualcuno sa una soluzione facile per risolvere questo?

risposta

23

Si può sicuramente fare questo con l'API Static Maps:

ottenere indicazioni stradali utilizzando DirectionsService:

http://code.google.com/apis/maps/documentation/javascript/reference.html#DirectionsService

e convertire il percorso panoramica per soddisfare le esigenze delle API Static Maps:

http://code.google.com/apis/maps/documentation/staticmaps/#Paths

+1

Per convertire il percorso di panoramica è possibile utilizzare google.maps.geometry.encoding.encodePath() quindi utilizzarlo direttamente con l'API della mappa statica –

+1

esiste una soluzione web API per PHP anziché javascript? – Tharindu

0

Penso che non si possa usare questa funzione con l'API statica. Tuttavia è possibile utilizzare Directions con l'API JavaScript V3.

+0

Grazie per la risposta. Sì, prendi le indicazioni e poi genera il percorso, sapevo che avresti potuto farlo in quel modo, speravo che qualcuno avesse già codificato questo processo :) – Piero

+0

È assolutamente possibile tracciare un percorso su una mappa statica, purché si ottenga la "polilinea codificata" "da una precedente chiamata API (tramite l'API Directions). Fare riferimento al parametro 'enc' nell'API di mappe statiche. – 1owk3y

1

Utilizzo di polilinee è possibile tracciare linee rette.

La classe Polilinea definisce una sovrapposizione lineare di segmenti di linea connessi sulla mappa. Un oggetto Polilinea consiste in una serie di posizioni LatLng e crea una serie di segmenti di linea che collegano tali posizioni in una sequenza ordinata.

u può vedere l'esempio qui

https://google-developers.appspot.com/maps/documentation/javascript/examples/polyline-simple

su polilinee

https://developers.google.com/maps/documentation/javascript/overlays

+0

Penso che questo non sia un esempio di mappa statica. – hswner

-1

ho dugged in molti suggerimenti e codici e combinato tutto per rendere una soluzione molto semplice, il codice di cui sopra dovrebbe funzionare per voi:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&sensor=false&mode=driving",[startLat floatValue] ,[startLong floatValue], [endLat floatValue], [endLong floatValue]]]; 

NSDictionary *PathInfo;//the json of the result 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
if (!error) { 
    PathInfo = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&error]; 
    GMSPath *path =[GMSPath PathInfo[@"routes"][0][@"overview_polyline"][@"points"]]; 
    GMSPolyline *singleLine = [GMSPolyline polylineWithPath:path]; 
    singleLine.strokeWidth = 3; 
    singleLine.strokeColor = [UIColor redColor]; 
    singleLine.map = mapView_; 
}