वर्तमान में मेरे पास एक ऑफ़लाइन HTML5 मानचित्र अनुप्रयोग है (जो कि कस्टम परिवर्धन के साथ USC & KendoUI पर बनाया गया है) जिसमें एक ऐप मैनिफ़ेस्ट है और कई प्लेटफार्मों पर ठीक काम करता है। हालांकि, मैं इस तरह से वास्तविक मानचित्र टाइलों को संग्रहीत करने के लिए मैनिफ़ेस्ट का उपयोग करने में संकोच कर रहा हूं (पीएनजी फाइलें एक टीएमएस स्टाइल टाइल कैश के रूप में संग्रहीत)।
मुद्दे:
- लगभग 1,000 पीएनजी फाइलों में बहुत सारी टाइलें (10 एमबी - 50 एमबी) हो सकती हैं
- प्रारंभिक डाउनलोड वास्तव में धीमा हो सकता है (और उपयोगकर्ता को प्रगति दिखाने के लिए कठिन है)
- ऐप मैनिफ़ेस्ट काम करते हैं या वे नहीं करते हैं यदि वे पूरी तरह से ऑफ़लाइन कैशिंग विफल नहीं होंगे ([whatwg.org] [1] के अनुसार)
- ऑफ़लाइन उपयोगकर्ता को कभी-कभी पुन: कनेक्ट करना होगा और टाइलों के रिफ्रेश होने की आवश्यकता होगी, ये छोटे डेल्टा हैं लेकिन ऐप मैनिफ़ेस्ट मेकेनिज़्म सभी जीएस, सीएसएस, और पीएनजी फाइलों को जल्द ही अपडेट अपडेट में पुनः लोड कर देगा।
वैकल्पिक विचार: वेब एप्लिकेशन को स्लिपी मैप टाइल्स के भंडारण से अलग रखें। टाइल्स को वेब एप्लिकेशन फ्रेंडली डेटाबेस में स्टोर करें
अद्यतन करें:
[PouchDB ने हाल ही में बाइनरी ब्लब्स के लिए समर्थन जोड़ा है। मुझे अच्छे प्रारंभिक परिणाम मिल रहे हैं। देखें: /programming/16721312/use-pouchdb-as-an-offline-raster-map-cache ]
- यह बेन नोलन http://bennolan.com/2011/06/03/offline-mapping.html द्वारा सुझाया गया है
- स्टिक पर मानचित्रों पर समान कार्य: http://developmentseed.org/blog/2010/oct/02/maps-stick-version-2-released/ ([पदावनत) [2])
- MBtiles http://mapbox.com/developers/mbtiles/
- टाइलस्ट्रीम https://github.com/mapbox/tilestream
- लूस रेमी: http://louisremi.com/2011/10/07/offline-web-applications-were-not-there-yet/
प्रश्न: एक जावास्क्रिप्ट अनुकूल DB के लिए निम्नलिखित विकल्पों के बारे में सामूहिक ज्ञान (और अनुभव) क्या कहता है:
- SqlLite
- लगता है जैसे आपको इसके लिए एक देशी ऐप रैपर बनाने की आवश्यकता है ताकि वह जावास्क्रिप्ट पर बात कर सके
- उदा आपको DLL को विंडोज़ के लिए एक मूल कार्यक्रम में जोड़ें, और Android / IOS के लिए PhoneGap
- WebSQL
- depricated
- लेकिन यह एक SQL लाइट था जिसे मैं होस्ट वेब सर्वर से आसानी से जनरेट और वितरित कर सकता था
IndexDB
- ब्लोअर्स स्टोर करने से लगता है कि काम करना है: https://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/
- मुझे चिंता है कि यह शुरुआत में DB को आबाद करने का एकमात्र तरीका है
- क्या यह मूल रूप से SQLLite फ़ाइल है? क्या मैं इसे बल्क डीबी अपलोड के लिए शिप कर सकता हूं?
- मैं एक समाधान के रूप में इस ओर झुक रहा हूं। क्या मुझे उनके बारे में जानकारी नहीं है?
आवश्यकताएँ:
- ग्राहक वेब डीबी के लिए तेजी से प्रारंभिक जनसंख्या (डाउनलोड के माध्यम से)
- वर्तमान पत्रक टाइललेयर एपीआई के साथ संगत (यानी मैं एक कस्टम परत नहीं लिखूंगा, लेकिन यदि आवश्यक हो ...) (जैसे एमबीटीइल)
- प्लेटफ़ॉर्म: विंडोज़ लैपटॉप, लेकिन एंड्रॉइड और आईओएस टैबलेट्स वांछित (मैं इंडेक्सबीडी जारी होने तक इंतजार कर सकता हूं, तत्काल समर्थन की आवश्यकता नहीं है)
- मैं इसके बजाय एक मूल एप्लिकेशन (ईएक्सई, आईओएस, एंड्रॉइड) नहीं लिखूंगा, लेकिन अगर यह सबसे अच्छा तरीका है ...
- वेब मैप्स का सर्वर साइड जनरेशन (यह एक स्वचालित प्रक्रिया होगी)। उपयोगकर्ता एक स्थान चुनता है, नक्शे चुनता है, और वे गतिशील रूप से रूपांतरित हो जाते हैं और एक फिसलन टाइल कैश में बदल जाते हैं (यह काम पहले ही काफी हद तक हो चुका है)।
- तेज थोक प्रारंभिक डाउनलोड
- नक्शा परिवर्तन का ताज़ा विवरण (मैं इस तर्क को, निरंतर स्टॉक संख्या और अद्यतन तिथि तर्क के आधार पर लिखूंगा)
- वर्तमान पत्रक और KendoUI वेब अनुप्रयोग पर न्यूनतम प्रभाव
अद्यतन करें:
मुख्य पृष्ठभूमि विचार: जबकि वेब ऐप काफी स्थिर है, आपके स्थान के लिए फ्लाई पर स्लिपी मैप टाइलें उत्पन्न होती हैं और आप किस प्रकार की समस्या (बैक-एंड पर) कर रहे हैं। इसलिए मैंने शुरुआती 'बिग बैंग' को स्थानांतरित करने के दो और तरीकों के बारे में सोचा और फिर अपडेट किया:
ज़िप फ़ाइल (शायद यह एक अच्छा विचार नहीं है - जैसा कि यह सर्वर लोड जोड़ता है) क्लाइंट मशीन पर भी विस्तार से उपयोगकर्ता को बातचीत की आवश्यकता होगी, लेकिन यह स्थानीय url का उपयोग करने के लिए फिसलन टाइलों की अनुमति देता है
HTML5 फ़ाइल API: मैंने इस पर बहुत विस्तार से ध्यान नहीं दिया है। लेकिन ऐसा लगता है कि टीएमएस प्रारूप में एक स्थानीय फ़ाइल ट्री बनाने के लिए अधिकांश ऑपरेशन हैं: http://www.html5rocks.com/en/tutorials/file/filesystem/ जो परीक्षण के लिए दिलचस्प होगा वह प्रदर्शन है (जैसे मैं वेब कार्यों का उपयोग कर सकता हूं बैंडविड्थ को डिस्क और नेट पर अधिकतम करने के लिए)। IndexDB व्यापक रूप से वेब वर्कर फ्रेंडली होने के लिए लागू नहीं है (सिंक इंटरफ़ेस: /programming/10698728/indexeddb-in-web-worker-on-firefox
मुझे IndexDB के साथ IndexDB का उपयोग करने के बारे में कुछ अतिरिक्त जानकारी मिली है:
https://github.com/calvinmetcalf/leaflet.pouch (ऑफ़लाइन के लिए इंडेक्सब के साथ सिंक काउच) भी यहां इंडेक्सड, वेबसकल और स्थानीय स्टोर के लिए पढ़ने / लिखने की गति के लिए कुछ परीक्षण हैं: http://jsperf.com/indexeddb -vs-LocalStorage / 15
और यहाँ जावास्क्रिप्ट से रीड / राइट फ़ाइल एपीआई का उपयोग कैसे किया जाता है: (और भंडारण सीमा बढ़ाने के लिए भी पूछना है) http://www.html5rocks.com/en/tutorials/file/filesystem/
कुछ अच्छी प्रतिक्रिया के लिए, टॉम मैकवर्थ (उर्फ tmcw), धन्यवाद। आपका उदाहरण वास्तव में तब मदद करने वाला है जब मैं बाइनरी ब्लॉब्स को निगलना करने के लिए कस्टम लेयर बनाने के लिए मिलता हूं।
मैंने IndexedDB के साथ कल कुछ परीक्षण किया और कुछ पॉलीफ़िल और पुस्तकालयों का उपयोग करके मुझे लगता है कि यह मेरे मुद्दों को हल करेगा। अब समय आ गया है कि इसमें कुछ पसीने की इक्विटी डाली जाए, और मैं रिपोर्ट करूंगा।
BTW: यदि आप क्लाइंट साइड डेटाबेस पर मेरे अध्ययन के मेरे परिणाम देखना चाहते हैं:
/programming/14113278/storing-image-data-for-offline-web-application-client-side-storage-database