80 likes | 345 Views
Common Map Widget API. Stephen Lubowsky EOIR slubowsky@eoir.com May 30 2013. Common Map Widget API. Current Users: JC2CUI / Enterprise Storefront GCCS-J I3 GCSS-J NRO / DCGS-IC Army – TMC (Tactical Mission Command ) NSA Other prospective Partners (evaluating)
E N D
Common Map Widget API Stephen Lubowsky EOIR slubowsky@eoir.com May 30 2013
Common Map Widget API • Current Users: • JC2CUI / Enterprise Storefront • GCCS-J I3 • GCSS-J • NRO / DCGS-IC • Army – TMC (Tactical Mission Command) • NSA • Other prospective Partners (evaluating) • Navy – C2RPC (PEO-C4I/PMW-150) • AOC-WS • Coast Guard • NGA • CIA • 94 current members of Common Map API Google Group • Others welcome
Common Map Widget API The Problem: • Many organizations developing map widgets. • Duplication of effort. No way to reuse tools developed for one map widget with another • Difficult for user to combine “feeds” from different systems into one map • Widgets fail to operate when a required, tightly-coupled, custom map widget is unavailable (e.g. no Google Earth server available) • Custom map widget may be unacceptable to user (e.g. map is 2d, user requires 3d view, Google Earth too expensive, etc…) The Solution: • Common Map Widget API
Common Map Widget API The first principle of design patterns is, Program to an interface, not an implementation – Design Patterns (Introduction) Approach: • Define a set of named channels and messages describing basic map operations • Don’t tie API to any particular implementation or map renderer (e.g. Google Earth) • Abstract operations away from physical map as much as possible. Any widget can subscribe to map channels and react appropriately – not just a map
Common Map Widget API Approach (continued): • Don’t try to include everything. Try for the 80-20 rule. Support non core functionality via API “extensions” • Many users are data viewers – not data authors. Additional non core functionality often not required for data viewing.
Common Map Widget API • View • map.view.zoom • map.view.center.overlay • map.view.center.feature • map.view.center.location • map.view.center.bounds • map.view.clicked • Status • map.status.request • map.status.view • map.status.format • map.status.format.about • Errors • map.error • API Summary • Overlays • map.overlay.create • map.overlay.remove • map.overlay.hide • map.overlay.show • map.overlay.update • Features • map.feature.plot • map.feature.plot.url • map.feature.unplot • map.feature.hide • map.feature.show • map.feature.selected • map.feature.update • Drag And Drop
Common Map Widget API • Current State: • Version 1.1 finalized March 2013 • Version 1.2 now under development • Intents • Formalize extensions • More... • Implementations: • JC2CUI – Reference Map Widget. Pluggable architecture, supports dynamically selected map renderer. JavaScript library can be reused for any desired renderer. Current implementations include Google Maps API version 2, Google Maps API version 3, Google Earth Plugin, OpenLayers 2.12. • Army – Google Earth Plugin based Map Widget with Army extensions. JavaScript wrapper library can be reused for any desired renderer. NASA World Wind implementation under development. • GCSS-I3 – NASA World Wind and Open Layers based implementations.
Common Map Widget API • More Information: • Common Map API Group: https://groups.google.com/forum/?fromgroups#!forum/common-map-widget-api • Common Map API Wiki: https://intellipedia.intelink.gov/wiki/Common_Map_Widget_API_Committee