Domanda

Programmazione un App iPhone, ho bisogno di utilizzare API di Google Maps per ottenere indicazioni stradali e percorsi. Purtroppo, Google Maps funziona intorno javascript.

Qualsiasi idea di come fare questo?

È stato utile?

Soluzione

È possibile implementare questo utilizzando un UIWebView. Quando si tratta di utilizzare JavaScript per accedere al servizio Google Maps attraverso le sue API di Google Maps, è sufficiente prendere vantaggio del metodo UIWebView:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

Si noti che è necessario per sfuggire nella stringa che rappresenta il vostro scritto, tutte le occorrenze di doppi apici, se necessario.

A titolo di esempio, il seguente metodo, necessario per centrare una mappa, è tratto dal capitolo 12 della programmazione iPhone SDK, per Maher Ali:

-(void) centerMap:(NSUInteger) index{
    CLLocation *loc = [locations objectAtIndex:index];
    NSString *js = 
    [NSString stringWithFormat:
     @"var map = new GMap2(document.getElementById(\"map_canvas\"));"
     "map.setMapType(G_HYBRID_MAP);"
     "map.setCenter(new GLatLng(%lf, %lf), 18);"
     "map.panTo(map.getCenter());"  
     "map.openInfoWindow(map.getCenter(),"
     "document.createTextNode(\"Loc: (%i/%i), Time: %@\"));", 
     [loc coordinate].latitude, [loc coordinate].longitude,
     index+1, [locations count], 
     [loc timestamp]];
    [webView stringByEvaluatingJavaScriptFromString:js];
}

Inoltre, tenere a mente quanto segue dalla documentazione di Apple:

  

JavaScript tempo di esecuzione è limitato a 10 secondi per ogni punto di ingresso di livello superiore. Se lo script viene eseguito per più di 10 secondi, Safari smette di eseguire lo script. Questo è probabile che si verifichi in un posto a caso nel codice, in modo da conseguenze impreviste possono derivare. Questo limite è imposto perché l'esecuzione JavaScript può causare il filo principale per bloccare, in modo che quando gli script sono in esecuzione, l'utente non è in grado di interagire con la pagina web.

     

allocazioni JavaScript sono limitati a 10 MB. Safari solleva un'eccezione se si supera questo limite sulla dotazione complessiva di memoria per JavaScript.

Altri suggerimenti

Prima di fare questo è necessario essere consapevoli che è contro Termini e condizioni di Google Maps di utilizzare i dati in un'applicazione a pagamento.

http://code.google.com/apis/maps/terms. html

  

9.1 libero, pubblico Accessibilità ai Maps API. Maps API   Attuazione deve essere generalmente   accessibile agli utenti a titolo gratuito.   Si può richiedere agli utenti di accedere al   Maps API se si fa   non richiede agli utenti di pagare una tassa. Salvo che   hanno stipulato un separato   accordo scritto con Google o   ottenuto il permesso scritto di Google,   Maps API non devono:

     

(a) richiedere un abbonamento a pagamento di   o altro accesso limitato in base a tariffa;   o (b) operare solo dietro un firewall   o solo su una rete interna (eccetto   durante lo sviluppo e la sperimentazione   fase).

     

10.8 utilizzare l'API di Maps statici non in un'implementazione in una rete   del browser;

Ho incluso sezione 10,8 pure. Questo è un discutibile, come si potrebbe sostenere che UIWebView è un browser, ma ancora di essere a conoscenza di esso.

Se si decide di andare avanti e usarlo quanto segue è davvero una buona implementazione che colma maggior parte del codice è necessario, http://code.google.com/p/iphone-google-maps-component/

Dal momento che è necessario rispettare con OS 3.0 API per lanciare la vostra applicazione su AppStore si potrebbe anche iniziare a utilizzare i metodi MapKit API per incorporare una mappa di Google all'interno dell'applicazione, senza WebView. La soluzione di cui sopra è che modo Google Maps utilizzato da 'incorporato' all'interno della vostra app, ma ora è possibile utilizzare MapKit con OS 3.0.

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