a combat support agency defense information systems agency common map widget api june 05, 2013

16
A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

Upload: amos-clyde-cox

Post on 24-Dec-2015

221 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

Defense Information Systems Agency

Common Map Widget API

June 05, 2013

Page 2: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

Agenda

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

2

Page 3: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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 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

Page 4: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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

4Adopted by OWF GOSS as OWF related project

Page 5: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

5

Background

• 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

Page 6: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

First Principles

• 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

Page 7: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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

Page 8: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

The API (Conceptual View)

8

Map Widget “container”

OpenLayers Library

Map Library-Unique APIs (e.g., OpenLayers, GoogleMaps, Proprietary, etc)

Common Map Widget API – enables widgets from different communities to interoperate with different maps

JavaScript Translation Code

Search Widget

Analysis Widget

SA Widget

Map Widget “container”

Google Earth Library

JavaScript Translation Code

Map Widget “container”

Google Map Library JavaScript Translation Code

Intel Widget

Page 9: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

– 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

The API (summary)

9Will expand these in next few slides

– 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.about

– Errors• map.error

Page 10: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

The API (Actual Text)

10

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.”

Page 11: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

The API (Actual Text)

11

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}

Page 12: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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

Page 13: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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

Page 14: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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

Page 15: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

A Combat Support Agency

JC2 CUI Example

15

Publish map.feature.plot

message

Receive message. Plot tracks on map

Receive message. Plot tracks on map

Receive message. Plot tracks on map

Receive message. Show

tracks in grid

Publish map.feature.selected

message

Receive message. Center on selected

track

Receive message. Center on selected

track

Receive message. Center on selected

track

Publish map.feature.selected

message

Receive message. Center on selected

track

Receive message. Center on selected

track

Receive message. Scroll to selected

track

Page 16: A Combat Support Agency Defense Information Systems Agency Common Map Widget API June 05, 2013

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