You are on page 1of 16

Defense Information Systems Agency

A Combat Support Agency

Common Map Widget API

June 05, 2013


Agenda
A Combat Support Agency

• Background
• The API
• Current Status
• Implementation Example (picture only)

2
Background: OWF
A Combat Support Agency

• Widgets: web pages or apps contained in an iframe, often


used to provide views of dynamic content
• Ozone: combination layout manager and messaging
mechanism for hosting widgets within a Web browser.
– It resembles iGoogle, and uses Shindig, an open source Google
gadget (widget) container.
• Because browsers don't permit communication between
iframes from different domains, Ozone also provides cross-
domain-compatible pub-sub mechanism.
– Enables development of Web apps composed of multiple
intercommunicating widgets.
• OWF = Ozone Widget Framework: in wide use across
DoD/IC programs
3
Background
A Combat Support Agency

• Current Users:
– Joint Command and Control Common User Interface (JC2CUI)
– Global Command and Control System – Integrated Imagery and Intelligence
(GCCS-I3)
– Distributed Common Ground System – Intelligence Community (DCGS-IC)
– Defense Intelligence Information Enterprise (DI2E) Framework
– Army Tactical Mission Command
– NSA
• Other Prospective Partners:
– Navy C2RPC (PEO-C4I/PMW-150)
– AOC-WS
– US Coast Guard
– CIA

Adopted by OWF GOSS as OWF related project 4


Background
A Combat Support Agency

• A Common Pattern
– Widgets query for or manipulate data
– Map widget displays results
• The Vision
– Mix and match query widgets and map widgets from different
programs
– I.e., plug and play
• The Problem
– Map widgets are tightly coupled to query widgets
– Interwidget comms (channels) unique to each program
• The Solution
– Common Map Widget API

5
First Principles
A Combat Support Agency

• First principle of design patterns:


program to an interface, not an
implementation

• From Design Patterns: Elements of Reusable Object-


Oriented Software by the "Gang of Four”

6
The API (Basic Approach)
A Combat Support Agency

• Identify basic map operations


• Abstract operations away from any physical map
• Define channels and messages, and associate
with basic map operations (i.e., the API)
• Any widget can subscribe to map channels and
react appropriately
– not just a map
• Don’t tie API to any particular implementation or
map renderer
– e.g. Google Earth, OpenLayers

7
The API (Conceptual View)
A Combat Support Agency
Search
Map Widget “container” Widget

OpenLayers JavaScript
Library Translation Code Analysis
Widget

Map Widget “container”


SA
Google Earth JavaScript Widget
Library Translation Code

Intel
Widget
Map Widget “container”

Google Map Library JavaScript


Translation Code

Map Library-Unique APIs Common Map Widget API – enables


(e.g., OpenLayers, widgets from different communities to
GoogleMaps, Proprietary, etc) interoperate with different maps 8
The API (summary)
A Combat Support Agency

– Overlays – View
• map.overlay.create • map.view.zoom
• map.overlay.remove • map.view.center.overlay
• map.overlay.hide • map.view.center.feature
• map.overlay.show • map.view.center.location
• map.overlay.update • map.view.center.bounds
• map.view.clicked
– Features
• map.feature.plot – Status
• map.feature.plot.url • map.status.request
• map.feature.unplot • map.status.view
• map.feature.hide • map.status.format
• map.feature.show • map.status.about
• map.feature.selected
• map.feature.update – Errors
• map.error
– Drag And Drop
Will expand these in next few slides
9
The API (Actual Text)
A Combat Support Agency

Plot URL
Purpose: Have the map plot feature data from a Uniform Resource Locator (URL).

Channel: map.feature.plot.url

Payload: {overlayId: (optional), featureId: (required), featureName:


(optional), format: (optional), url: (required), zoom:
(optional)}

overlayId: The id of the overlay this feature should be loaded into. If overlay with this id already
exists, new feature is merged into existing overlay; otherwise, new overlay will be
created. If no overlayId is included, default overlay with id equal to sending widget's id is
used. If overlay exists, it will retain its status (whether visible or hidden). If overlay is
created, it will be made visible.

featureId: Unique identifier for the given feature data. Note that feature ids must be unique within
a given overlay. Reusing a feature id will be considered a reload, with the original
feature data being removed and replaced by the new feature data.

featureName: Name for the given feature data. Note that feature names do not have to be unique and
are intended for display purposes only.

format: Data format of the given feature. If no format is specified, the format defaults to “kml.” 10
The API (Actual Text)
A Combat Support Agency

Center on Location
Purpose: Center the map on a particular location. The map may also be zoomed as close as
possible to the location or to a given range.

Channel: map.view.center.location

Payload: {location: {lat: (required), lon: (required)} (required), zoom:


(optional)}

location: Location to be centered in map.

lat: The latitude value of the point.

lon: The longitude value of the point.

zoom: If “auto,” map will adjust to zoom in to the given location as close as possible in the
user's viewable area.
If a number, map will zoom to specified range in meters.
If no zoom attribute is included, no zoom is performed.

Example: {"location": {"lat": 40.2205, "lon": -74.3579}, "zoom": 70250} 11


The API (in code)
A Combat Support Agency

– Load kml feature data onto map

widgetEventingController.publish('map.feature.plot.url', '{
"featureId": “SAGE_PUBLIC",
"url": "https://sageearth.northcom.mil/arcgisserver/public/SAGE_link.kml"
}');

– Center Map on Location (pan)

widgetEventingController.publish('map.view.center.location', '{
"location": {"lat": 40.2205, "lon": -74.3579}
}');

12
Current Status
A Combat Support Agency

• Current spec (v1.1)


– Requires KML and WMS (getMap)
– Signed off early 2013
– Growing community of adopters
• Next version (v1.2)
– Ambiguity fixes
– User manipulation support
– Optional extensions (e.g., widget intents, clustering)
– Considering GeoJSON
– Growing community of participants

13
Common Map Widget API
A Combat Support Agency

• 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

14
JC2 CUI Example
A Combat Support Agency

Publish ReceivePublish
message. Receive
Receive message.
message. Receive message.
Receive message. Receive message. Receive message.
map.feature.plot map.feature.selected
Center on selected Center
Center on on selected
selected Center on selected
Plot tracks on map Plot tracks on map Plot tracks on map
message message
track track
track track

Receive
Receive
Publish
message.
map.feature.selected
message.
Scroll to selected
Show
tracks
message
track
in grid

15
Additional Information
A Combat Support Agency

• 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

• POCs for additional info:


– Ken Trabue - kenneth.m.trabue.civ@mail.mil
– Stephen Lubowsky - slubowsky@eoir.com
– Marty Dowd - martin.j.dowd.ctr@mail.mil
– Chris Bashioum – cbashioum@mitre.org, bashiouc@nro.ic.gov

16

You might also like