Draft multi-click imagemap proposal

Douglas D. Nebert, Chief, SDSU (ddnebert@wrdmail.er.usgs.gov)
Wed, 22 Feb 95 12:40:30 EST

The following is a draft specification I'd like to introduce into
the WWW user community regarding a multi-click imagemap capability,
I refer to as "multimap". Please look it over and provide me with
any comments and specific revisions and directions to go with it. I see
this as an essential vehicle to take WWW clients into map browsing
and data searching with a minor tweak to the software.

Doug Nebert
U.S. Geological Survey
Reston, VA
(703) 648-5691

-----------------------------------------------------------------------

Draft Specification for the Multi-click Imagemap (Multimap)

Doug Nebert
ddnebert@usgs.gov
February 2, 1995

Introduction

The imagemap feature supported as part of the Hyper-Text Markup
Language (HTML) Version 1.0 and as supported by NCSA Mosaic
allows the server-side definition of a bit-mapped image placed in-
line whose cells are mapped to the execution of a specific URL. This
behavior permits a large number of creative solutions including
geographic map backdrops, metamaps, organizational charts, and
other clickable interfaces. In version 2.0 of HTML, forms were
introduced to permit the assignment of a series of variables and their
passage to a server-side program. Forms are used widely on the
World Wide Web now as front-ends to databases, query-builders,
and other systems requiring a suite of input conditions to be set.

Interaction with complex databases, particularly ones where
graphical selection of features on an imagemap, may require the
storage of imagemap selections as well as form variables to be sent
together to a server-side application. Moreover, to take advantage of
the complex information that may be present in imagemaps, the
ability to select multiple elements in an imagemap is not currently
supported by the HTML protocol. In addition, to provide flexibility
in execution, the selection should not necessarily be linked to "fire"
a specific URL, but allow the server to decide what action to perform
based on form settings.

Objectives and Scope

This proposal defines the elements required as extensions to the
imagemap capability within the HTML specification to support the
selection and storage of multiple coordinates. These multiple
coordinates can subsequently be used by a server-side application
for a variety of purposes.

Functional Scenario

A user fetches an HTML document from a server that includes a map
and a series of controls. The map is a geographic presentation of the
globe and is an imagemap as depicted by the colored border on it.
Control buttons below the imagemap include the functions to zoom-
in, show full extent, define a search region, and to query by point or
by circle selected mapped features. The user decides to zoom in on South
America by selecting the zoom button and clicking once in the
imagemap somewhere in the middle of South America. The server
provides a new display with the same buttons and a zoomed-in map.
The user then decides to define a search region by defining an
enclosing rectangle with the mouse after pressing the Define Search
Region button. The display is again refreshed and the user is shown
a map of closed polygons depicting ecological zones within the region.
After selecting the query by point button, the user proceeds to point
at a single polygon, and a list of ecological zone characteristics is
displayed as the current document. Still curious, the user returns to
the previous page and decides to select a number of ecological
features by clicking on them and pressing the Submit Query button.
A document is returned with the map at the top, selected features
highlighted, and their attributes displayed below.

The scenario just presented illustrates many of the features that an
expanded imagemap could support when used in a forms setting.
The notion of an imagemap here is now changed from one that maps
individual pixels, polygons, or rectangles to specific (and singular)
URLs to one that simply returns the value (or values) of the cell
coordinates pushed and passes them, along with other form-defined
variables back to a server side application where the action is
decided. This proposal allows for a great deal of flexibility in
procesing and in customizing the user interface with a minimum of
modification to the server or client and is consistent with the overall
user interface look and feel.

Elements

To accomplish this the following seven elements would need to be
supported in HTML and in the "Web" clients and servers:

1. The inclusion of a "multimap" or modified "imagemap" object type in
HTML that can operate within the context of a form session.

2. The imagemap object would be associated with an in-line image and
would cause the assignment of row and column variables to be
stored in a buffer and the value expressed as comma-delimited pairs
of row and column values. Two name=value assignments will need to
be made to pass necessary information by a "POST" type form to a server;
these are "gettype" and "coords".

3. Five types of multimap actions shall be supported by the client and
the server, and are defined using reserved variables. Two primary
classes of actions that may be executed on a imagemap are single and
multiple clicks. Single click is similar to imagemap behavior except
that a URL is not fired, only a coordinate pair is passed to the server
for resolution. This allows for flexible processing on the server
end, particularly with a Geographic Information System. Clicks are defined
with the types:

gettype=POINT
sets the coords string to a single row-column pair as defined
by a single click. This is the default if not set in the form.

gettype=CIRCLE
will set the coords string to two row-column pairs defining
a point for center and point on radius defined by user

gettype=BOX
will set the coords string to two row-column pairs defining
a point for two opposing corners of a selection rectangle

gettype=RANDOM
will set the coords string to "n" row-column pairs defining
a collection of non-ordered points (i.e. for pointing at multiple
selection locations)

gettype=CHAIN
will set the coords string to "n" row-column pairs defining
a collection of ordered points to define a linear feature

gettype=REGION
will set the coords string to "n" row-column pairs defining
a collection of ordered points to define a closed (first point
equals last point) region for selection

The number of points passed into the buffer is "closed" when the
"submit" button is pressed in the form.

4. The user may select from several action types the server supports.
If the getmap supports only one action then it is defined as the
action in the imagemap HTML reference:

<img src="usmap.gif" ismap gettype=REGION>

This action may be overridden by setting a variable through a form
button to set the "gettype" variable (see example below). If the gettype
is not set in the form or IMG statement, then gettype is set to POINT
as default.

5. Execution of a server-side program is done through the form operation.
Such a program may access a spatial database and produce graphic or textual
results that could be sent to the user, as defined by the action of the
application program.

6. The client application may optionally draw the selection points
as they are being drawn with lines to connect the points entered. This
provides user feedback about the region being selected to pass to the
server.

7. Error processing -- Potential error conditions exist when:

-- gettype is POINT and more than one point is pressed
-- gettype is CIRCLE or BOX and more than two points are pressed

Both of these conditions should cause a terminal bell (control-G) and
will not accept more points into the buffer.

Example

Sample HTML for a combined form with multi-click imagemap capability:

----------------------------------------------------------

Test Imagemap for Multi-Click Selection

Test Imagemap for Multi-Click Selection

Please define a selection type from the list below. When done, press the Submit button.

----------------------------------------------------------

Explanation:

HTML, above, would produce an imagemap to click on. The selected value
in the form is gettype="REGION" so the user would click multiple times
to define a closed region. The variables would be set as below to the
bquery.pl program:

gettype = "REGION"
coords = "42,10,70,100,90,104,75,90,42,10"

where the string "coords" is a series of five row-column values