Common Map Widget API v13 - C4I Center

Report
Defense Information Systems Agency
A Combat Support Agency
Common Map Widget API
June 05, 2013
A Combat Support Agency
•
•
•
•
Agenda
Background
The API
Current Status
Implementation Example (picture only)
2
A Combat Support Agency
Background: OWF
• 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 crossdomain-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
A Combat Support Agency
Background
• 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
A Combat Support Agency
First Principles
• First principle of design patterns:
program to an interface, not an
implementation
• From Design Patterns: Elements of Reusable ObjectOriented Software by the "Gang of Four”
6
A Combat Support Agency
The API (Basic Approach)
• 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
A Combat Support Agency
The API (Conceptual View)
Map Widget “container”
OpenLayers
Library
JavaScript
Translation Code
Map Widget “container”
Google Earth
Library
Search
Widget
JavaScript
Translation Code
Analysis
Widget
SA
Widget
Intel
Widget
Map Widget “container”
Google Map Library
Map Library-Unique APIs
(e.g., OpenLayers,
GoogleMaps, Proprietary, etc)
JavaScript
Translation Code
Common Map Widget API – enables
widgets from different communities to
interoperate with different maps
8
The API (summary)
A Combat Support Agency
– View
– 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
•
•
•
•
•
•
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.about
– Errors
• map.error
– Drag And Drop
Will expand these in next few slides
9
A Combat Support Agency
The API (Actual Text)
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
A Combat Support Agency
The API (Actual Text)
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
A Combat Support Agency
The API (in code)
– 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
A Combat Support Agency
Current Status
• 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
A Combat Support Agency
Common Map Widget API
• 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
A Combat Support Agency
Publish
map.feature.plot
message
JC2 CUI Example
Receive
Publish
message.
Receive message.
map.feature.selected
Center on selected
Plot tracks on map
message
track
Receive
Receive message.
message.
Receive message.
Center
Center on
on selected
selected
Plot tracks on map
track
track
Receive message.
Receive message.
Center on selected
Plot tracks on map
track
Receive
Receive
Publish
message.
map.feature.selected
message.
Scroll to selected
Show
tracks
message
track
in grid
15
A Combat Support Agency
Additional Information
• 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 - [email protected]
Stephen Lubowsky - [email protected]
Marty Dowd - [email protected]
Chris Bashioum – [email protected], [email protected]
16

similar documents