2013-10-15 21 views
11

Ho riscontrato alcuni problemi con il corretto funzionamento delle mappe su due veri telefoni Android: uno in esecuzione 2.2.2 e uno in esecuzione 4.2.2. Quest'ultimo mi ha sempre dato un po 'di dolore quando si tratta di mappe. Ho messo questo in un'altra discussione here in quanto l'ho parzialmente risolto.Build PhoneGap: whitelist di Google Map Domains per API v3

Nota: utilizzo Build PhoneGap con Dreamweaver CS6. Solo un config.xml senza file manifest xml.

Ora ho un altro problema in quanto devo autorizzare tutti i domini affinché la mappa funzioni correttamente su 4.2.2 e non so perché. Inizialmente ho avuto questo nel mio config.xml:

<access origin="*.googleapis.com" /> 
<access origin="*.gstatic.com" /> 
<access origin="*.google.com" /> 
<access origin="maps.googleapis.com" /> 
<access origin="maps.gstatic.com" /> 
<access origin="mt0.googleapis.com" /> 
<access origin="mt1.googleapis.com" /> 
<access origin="csi.gstatic.com" /> 

Anche se questo ha funzionato perfettamente per Android 2.2.2 vorrei ottenere i seguenti problemi su 4.2.2:

  • inferiore della mappa manca l'ultimo fila di tegole (se uso HTTPS per le mappe src google)
  • Marcatori non visualizzerebbe affatto

Con solo whitelist tutto, tutti questi problemi sono scomparsi. Tuttavia, non voglio autorizzare tutto, quindi qualcuno sa se mi manca qualcosa qui?

Qualsiasi aiuto molto apprezzato.

MODIFICA: Sono consapevole che utilizzando * .googleapis.com includerò anche i domini di whitelist rimanenti simili. Tuttavia ho notato un paio di volte nelle mie ricerche che iOS richiede che i domini siano elencati in modo esplicito. Anche se al momento potrebbe non essere applicabile, intendo che questa app venga utilizzata su iOS, quindi l'ho lasciata in sospeso (a meno che qualcuno non possa dirmi che è completamente inutile e non necessaria ;-).

//////// UPDATE 1 ////////

Dopo aver versato tramite la scheda di rete su strumenti di Chrome per sviluppatori, ho estratto tutti gli URL a cui si accede da google maps . Affermando esplicitamente ognuno di loro, tutto funziona bene in questo modo:

<access origin="https://mts.googleapis.com" subdomains="true"/> 
    <access origin="https://mts0.googleapis.com" subdomains="true"/> 
    <access origin="https://mts1.googleapis.com" subdomains="true"/> 
    <access origin="https://maps.googleapis.com" subdomains="true"/> 
    <access origin="https://fonts.googleapis.com" subdomains="true"/> 
    <access origin="https://maps.gstatic.com" subdomains="true"/> 
    <access origin="https://csi.gstatic.com" subdomains="true"/> 
    <access origin="https://themes.googleusercontent.com" subdomains="true"/> 

Questi sono probabilmente soggette a modifiche in modo sarebbe bene se potessi semplicemente utilizzare un carattere jolly * davanti a ciascuno dei domini, ma questo non non funziona. Ho provato entrambe le operazioni seguenti con senza successo:

<access origin="*.googleapis.com" subdomains="true"/> 
    <access origin="*.gstatic.com" subdomains="true"/> 
    <access origin="*.googleusercontent.com" subdomains="true"/> 


    <access origin="https://*.googleapis.com" subdomains="true"/> 
    <access origin="https://*.gstatic.com" subdomains="true"/> 
    <access origin="https://*.googleusercontent.com" subdomains="true"/> 

Qualcuno ha qualche idea sul motivo per cui non sono in grado di usare il jolly in questi casi? Saluti.

//////// UPDATE 2/RISPOSTA ////////

Dopo molti esperimenti ho trovato la risposta. Sembra che tu debba essere molto specifico nel modo in cui scrivi i tag in config.xml soprattutto quando si tratta di consentire i sottodomini - apparentemente specificare sottodomini non funziona con i caratteri jolly, quindi hai bisogno di due blocchi di tag. Finalmente ho entrambi i dispositivi funzionano correttamente utilizzando il protocollo HTTPS utilizzando il seguente:

<access origin="*.google.com" /> 
    <access origin="*.googleapis.com" /> 
    <access origin="*.gstatic.com" /> 
    <access origin="*.googleusercontent.com" /> 
    <access origin="google.com" subdomains="true"/> 
    <access origin="googleapis.com" subdomains="true"/> 
    <access origin="gstatic.com" subdomains="true"/> 
    <access origin="googleusercontent.com" subdomains="true"/> 

Speriamo che questo sarà utile a qualcuno.Ancora non capisco perché ha funzionato bene sulla versione precedente di Android. Forse qualcuno può aiutarmi a illuminarmi se si sentono così?

risposta

1

La sintassi per i domini di whitelisting è cambiata con le versioni di PhoneGap. Se si utilizza la versione 3.1 o successiva, consultare questa documentazione per la sintassi: http://docs.phonegap.com/en/3.1.0/guide_appdev_whitelist_index.md.html. Sto pensando che potrebbe essere il motivo per cui i tuoi caratteri jolly non funzionavano per te.

Sto usando il seguente e funziona per mostrare i miei Google Maps nel mio PhoneGap App:

<access origin="*://*.googleapis.com/*" subdomains="true" /> 
<access origin="*://*.gstatic.com/*" subdomains="true" /> 
<access origin="*://*.google.com/*" subdomains="true" /> 
<access origin="*://*.googleusercontent.com/*" subdomains="true" /> 
Problemi correlati