Interactive SVG web mapping with Oracle Application Server MapViewer

Ji Yang (Ji.Yang@oracle.com)
Liujian Qian (Lj.Qian@oracle.com)
Jayant Sharma (Jayant.Sharma@oracle.com)
Spatial Products, Server Technology
Oracle Corporation
1 Oracle Drive
Nashua, NH 03062

Geographic data has traditionally been managed in proprietary-formatted files and displayed using special GIS applications. Oracle Database 10g provides an open and standard-based geographic data management solution via either Oracle Spatial or Locator. Users can load all types of geometric data into a database, create spatial indexes, and issue spatial queries all through SQL. Written purely in Java and run in a J2EE environment, MapViewer provides web application developers a versatile means to integrate and visualize business data with maps. MapViewer uses the basic capability included with Oracle10g (delivered via either Oracle Spatial or Locator) to manage geographic mapping data. MapViewer hides the complexity of spatial data queries and the cartographic rendering process from application developers.

The services provided by MapViewer are accessed through a flexible and powerful XML-based API over HTTP protocol. Using this API, an application developer can direct MapViewer to fetch spatial data and generate maps from any Oracle database instance. The map metadata, which is used to control visual map characteristics, is stored in database tables. It is also possible to incorporate dynamically obtained geospatial data, such as customer locations, and plot these on top of a base map via XML API.

MapViewer can render maps into various raster image formats such as GIF, JPEG and PNG. Raster images fit well in most web mapping applications that only require basic client side interaction such as zooming and panning. But the static characteristic of raster image limits its usage in web mapping applications that complicated client side interactivity is desired, where SVG is getting a lot of attention. Compared to raster images, SVG's vector graphics combined with ebedded scripting make providing rich map interactivity much more easier and efficient. From the next new release, MapViewer will be able to render map images in SVG, and developers will then be able to take advantage of benefits provided by SVG in developing highly interactive web mapping applications.

In the actual implementation, a new SVG rendering module is added to the MapViewer rendering engine. In addition to standard vetor map graphical features, the SVG rendering module also provides the following user interactivity enhancement features in SVG.

·   Info tips

Customizable text information associated with the graphical features can be displayed dynamically when the user moves mouse over the features in the map.

·   Map navigation supports

A built-in navigation bar is provided with the SVG map with basic zooming and panning capability. Navigation interactivity is implemented in embedded javascript. Javascript functions that can be called from outside SVG are also provided. With these javascript functions, map navigation can be controlled by the outside web page that has the SVG map embedded, and more complicated map navigation that involves server side map refreshing can be implemented.

·   Dynamic label adjustment

The size and positioning of map labels can be automatically adjusted to optimize the visual appearance when the map is zoomed in or out.

·   Customizable mouse click event handling

Mouse click event handling can be customized by user defined external javascript functions. More sophisticated client side interactivity, such as selecting features on the map and retrieving associated attribute information, can be implemented by utilizing user defined mouse click event handlers.

·   Map layer control

Javascript functions that can turn on/off a certain map layer are provided.

In this paper, we describe the overall architecture of the MapViewer and discuss the SVG rendering module in detail. In addition, we also describe the lessons learned, and future enhancements planned.