Offline-editor-js is an open source family of libraries for building offline capabilities into web mapping applications. It's specifically designed to work with the ArcGIS API for JavaScript and ArcGIS Online. It enables you to store features, attachments, map tiles and TPKs (Tile Packages).
Online samples and getting started tutorials are available here: http://esri.github.io/offline-editor-js/demo/
IMPORTANT: If you need a fully integrated, robust offline solution then you should be using our ArcGIS Runtime SDKs for .NET, WPF, Java, iOS, Android and Qt.
This repo contains the following libraries:
/dist
:offline-edit-min.js
- stores adds, updates and deletes of features as well as limited attachment support while offline. Resync's edits with server once connection is reestablished.offline-tiles-basic-min.js
- caches map tiles for partial offline use cases. Use this library with ArcGIS Online Web maps as well as with tiled map services. This repo will not work with browser restarts or reloads while offline.offline-tiles-advanced-min.js
- Extends any ArcGIS Tiled Map Service that has a requirement for offline browser reload and/or restart. This library should be used in conjunction with an HTML5 application cache coding pattern.offline-tpk-min.js
- parses a TPK file and displays it as a tiled map layer.
/utils
: contains various helper library modules. These modules are all AMD compliant./samples
: samples that show how to use the different offline libraries capabilities.
#Workflows Supported The following workflow is currently supported for both both features and tiles:
-
Load web application while online.
-
Once all tiles, features and attachments are loaded then programmatically take application offline.
-
Make edits while offline.
-
Return online when you want to resync edits.
Using an application manifest allows you to reload and restart the application while offline. The application manifest lets you store .html, .js, .css and image files locally.
Attachment Support: Attachments are supported with some limitations. See documentation here
#API and How To Use Docs
Go here to get links to the API docs and How to use docs.
Go here for answers to frequently asked questions.
##Setup Instructions
- Fork and clone the repo.
- After cloning from github,
cd
into theoffline-editor-js
folder - Run
git submodule init
andgit submodule update
- Try out the apps in the
/samples
folder.
##Build Instructions
- From the root directory run
npm install
- Run
Grunt build
. If there are no errors, the minimized (min) and source (src) versions of the libraries will be output to\dist
##Dependencies
-
ArcGIS API for JavaScript (v3.8+)
-
Node.js required for building the source
-
NOTE: browser limitations and technical dependencies. The offline capabilities in this toolkit depend on certain HTML5 capabilities being present in the browser. Go here for a detailed breakdown of the information.
-
We offer browser support for Chrome, Firefox and Safari only, at this time. Some of the capabilities in the repository will not work on Internet Explorer.
-
Sub-modules (see
/vendor
directory)- offline.js - it allows detection of the online/offline condition and provides events to hook callbacks on when this condition changes
- IndexedDBShim - polyfill to simulate indexedDB functionality in browsers/platforms where it is not supported (notably desktop Safari and iOS Safari)
- IMPORTANT: There are known issues with IndexedDBShim on Safari. For Safari, the storage error workaround is to switch from using /dist/IndexedDBShim.min.js to just using IndexedDBShim.js and then search for and modify the line that defines the value for
DEFAULT_DB_SIZE
. Set this to more appropriate size that will meet all your storage needs, for example:var DEFAULT_DB_SIZE = 24 * 1024 * 1024
- IMPORTANT: Coming in Safari 8 is built-in supported for IndexedDB.
- IMPORTANT: There are known issues with IndexedDBShim on Safari. For Safari, the storage error workaround is to switch from using /dist/IndexedDBShim.min.js to just using IndexedDBShim.js and then search for and modify the line that defines the value for
- jasmine.async - library to help implementing tests of async functionality (used in tests)
-
Non sub-module based libraries
- FileSaver.js - library to assist with uploading and downloading of files containing tile information.
- grunt-manifest node.js library to assist with the creation of manifest files.
- zip A library for zipping and unzipping files.
- xml2json A library for converting XML to JSON. Seems to handle complex XML.
Find a bug or want to request a new feature? Please let us know by submitting an issue.
Anyone and everyone is welcome to contribute. Please see our guidelines for contributing.
Copyright 2015 Esri
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
A copy of the license is available in the repository's license.txt file.
[](Esri Tags: ArcGIS Web Mapping Editing FeatureServices Tiles Offline) [](Esri Language: JavaScript)