2015-06-04 8 views

Antwort

6

Es hängt von den Anforderungen Ihrer Anwendung ab, ob dies möglich ist. Sind Ihre Benutzer auf "modernen" Geräten A.K.A wird HTML5 vollständig unterstützt? Müssen Ihre Benutzer die Karte global oder nur in einem bestimmten Bereich anzeigen/bearbeiten? Muss die Karte wirklich von Google bereitgestellt werden? Ich werde einige der folgenden Punkte behandeln, um auf mögliche Lösungen für dieses Problem hinzuweisen.

Brauchen Sie wirklich Google Maps? (Optimalste Szenerie)
Erstens, brauchen Sie wirklich Google Maps? Auch relevant: Wie weit müssen Ihre Nutzer ihre Karten zoomen? Wenn es irgendwelche Karten sein können, und Zoomen ist nicht wirklich von hoher Priorität (wenn es ist, einschließlich aller Kartenkacheln machen die App essen alle Speicher), könnten Sie wahrscheinlich Karten-Kacheln als ein verpacktes Teil Ihrer App verwenden, und zeigen sie mit einer Bibliothek wie http://leafletjs.com/ an. Die Bibliothek ist gut dokumentiert und bietet eine Kartenschnittstelle für eine Vielzahl von Kartenanbietern. Es ist möglich, dies so zu konfigurieren, dass Sie Ihre eigenen lokalen Kartenkacheln verwenden können. Sie können bei Bedarf auch Kartenkacheln für mehrere Zoomstufen verwenden und die Min/Max-Zoomstufen auf die Kacheln beschränken, die Sie tatsächlich zur Verfügung haben. Dadurch werden Ihre Karten offline geschaltet.

Ich kann nicht oder haben wan't nicht meine eigenen Fliesenstellen Sie sicher, zu schaffen, dass Sie wirklich in die Option sah, gibt es Systeme gibt, die Karte-Fliesen bieten könnten Sie (Check https://www.mapbox.com/ für Beispiel)
Okay, also wollen Sie wirklich nicht tun, was ich vorgeschlagen habe. Was sind die Optionen jetzt? JavaScript-Mapping-Lösungen rendern Kacheln in der Regel basierend auf der Position der Karte, die Sie sehen möchten, und der Zoomstufe. Diese Kacheln werden beim Kachelanbieter angefordert. I weiß nicht, wie dies für Google genau zu implementieren, könnten Sie einige Forschung dazu - ich werde versuchen, Ihnen helfen, eine Richtung zu sehen. Es wird Anfragen geben, die Kacheln von den Servern zu holen. Ich habe mit http://maps.google.com überprüft, welche Bilder geladen werden, wenn Sie versuchen, die Karte zu navigieren: (example (click)). Finden Sie heraus, welche URLs in Ihrer Situation verwendet werden, wir benötigen diese Art von URLs später (überprüfen Sie einfach die Registerkarte Netzwerk in Ihrer Browser-Konsole und sehen, welche Anforderungen beim Scrollen in Ihrer Karte gemacht werden). Wenn wir nur unsere Benutzer brauchen, um in einem bestimmten Bereich zu arbeiten, wenn wir offline sind können wir Service-Mitarbeiter die Antworten dieser Anfragen zwischenspeichern, wenn wir online sind, und diese Caches bedienen, wenn wir offline sind. Lesen Sie mehr über Service-Mitarbeiter here (click).
Vorteil: Echte Offline-Kartenfunktionalität für jede Kachel, die Sie zuvor besucht haben (sofern Ihr Cache nicht überflogen wurde, abhängig von Ihrer Implementierung der Service-Mitarbeiter und von Service-Mitarbeitern unterstützten Browsern/Geräten).
Nachteile: Keine Unterstützung für Kacheln, die nie in den Cache gestellt wurden (AKA: nie zuvor gesehen). Ein anderer: Dies funktioniert nur für Geräte, die Service-Mitarbeiter unterstützen. Ist möglicherweise eine Option in Situationen, in denen Sie sich entweder nicht für Benutzer interessieren, die "ältere" Geräte verwenden, oder wenn Sie die Geräteauswahl des Benutzers steuern können. Beachten Sie, dass die Verwendung von crosswalk hier Ihre Entwicklungsbemühungen erleichtern kann, da Sie dann nur eine Browser-Laufzeit in Betracht ziehen müssen: aber crosswalk unterstützt auch ältere Geräte nicht.
Jedoch: Diese Lösung könnte für Personen geeignet sein, die in einem bestimmten Bereich arbeiten müssen, was für den von @ vipul-r bereitgestellten Fall zutrifft. Wenn Sie oder Ihre Benutzer im Voraus wissen, wo sie ihre Karten benötigen Arbeit, können Sie ihnen beim Laden & anweisen/helfen, ihre Karten richtig zu cachen.

Wenn Sie nicht an einer dieser beiden Lösungen arbeiten können, bezweifle ich, dass es einen Weg gibt, dies zu tun. Nach meinem besten Wissen sehe ich keinen anderen Weg.