2015-06-04 14 views

risposta

6

Dipende dai requisiti della domanda se questo sarà possibile. I tuoi utenti su dispositivi "moderni" A.K.A sono completamente supportati da HTML5? I tuoi utenti devono visualizzare/modificare la mappa globalmente o solo in un'area specifica? La mappa deve davvero essere fornita da Google? Affronterò alcuni problemi di seguito per indicarti le possibili soluzioni a questo problema.

Hai davvero bisogno di google maps? (Scenerio ottimale)
Prima di tutto, hai davvero bisogno di google maps? Rilevante anche: fino a che punto gli utenti hanno bisogno di ingrandire le loro mappe? Se può essere qualsiasi mappa, e lo zoom non ha la massima priorità (se lo è, includendo tutte le tessere della mappa farà in modo che l'app mangi tutta la memoria), potresti probabilmente usare le tessere della mappa come parte della tua app, e visualizzarli con una libreria come http://leafletjs.com/. La libreria è ben documentata e fornisce un'interfaccia per una varietà di fornitori di mappe. Sarà in grado di configurarlo per utilizzare le tue tessere mappa locali. Se necessario, è possibile includere mappe per più livelli di zoom e limitare i livelli di zoom min/max alle tessere effettivamente disponibili. Ciò renderà le tue mappe funzionanti offline.

non posso o non wan't di fornire le mie tesserefare in modo che si ha realmente esaminato la possibilità, c'è sistemi là fuori che forniscono mappa-piastrelle è possibile utilizzare (controllare https://www.mapbox.com/ per esempio)
Ok, quindi davvero non vuoi fare ciò che ho suggerito. Quali sono le opzioni ora? Le soluzioni di mappatura Javascript tipicamente rendono i riquadri in base alla posizione della mappa che si desidera vedere e al livello di zoom. Queste tessere sono richieste al fornitore di piastrelle. I non so come implementare questo per google esattamente, potrebbe essere necessario qualche ricerca su questo - cercherò di aiutarvi a vedere una direzione. Ci saranno richieste per ottenere le tessere dai server. Ho controllato con http://maps.google.com quali immagini sono state caricate quando provo a navigare sulla mappa: (example (click)). Scopri quali URL sono utilizzati nella tua situazione, avremo bisogno di questo tipo di URL più tardi (basta controllare la scheda di rete nella console del browser e vedere quali richieste vengono fatte quando si scorre nella mappa). Quando abbiamo bisogno che i nostri utenti lavorino in una certa area quando offline potremmo usare gli addetti all'assistenza per memorizzare le risposte di queste richieste quando siamo online e servire quelle cache quando siamo offline. Maggiori informazioni sugli addetti all'assistenza here (click).
Vantaggio: Funzionalità della mappa offline reale per qualsiasi tessera visitata in precedenza (purché la cache non sia stata sorvolata, a seconda dell'implementazione degli addetti ai servizi e per i browser/dispositivi supportati dall'operatore di servizio).
Svantaggi: Nessun supporto per le piastrelle che non sono mai state inserite nella cache (AKA: mai visto prima). Un altro: funzionerà solo con dispositivi che supportano i lavoratori del servizio. Potrebbe essere un'opzione in situazioni in cui non ti interessa gli utenti che utilizzano dispositivi "più vecchi" o dove puoi controllare le scelte del dispositivo dell'utente. Tieni presente che l'uso del crosswalk potrebbe facilitare i tuoi sforzi di sviluppo qui, dal momento che devi considerare solo un runtime del browser: ma crosswalk non supporta i dispositivi più vecchi.
Tuttavia: Questa soluzione potrebbe andare bene per le persone che dovranno lavorare in un'area specifica, il che potrebbe essere vero per il caso fornito da @ vipul-r Se tu o i tuoi utenti sapete in anticipo dove hanno bisogno delle loro mappe per lavoro, puoi istruirli/aiutarli a caricare & nella cache delle loro mappe correttamente.

Se non riesci a lavorare su nessuna di queste 2 soluzioni, dubito fortemente che ci sarà un modo per farlo. Non vedo alcun altro modo per il meglio della mia conoscenza.