- From: Kristina Seyer Smith <kristina@bonair.Stanford.EDU>
- Date: Mon, 15 Jan 2001 18:18:13 -0800
- To: jonathan chetwynd <jc@signbrowser.org.uk>
- Cc: <w3c-wai-ig@w3.org>, roller@nebulus.org, kristina@bonair.Stanford.EDU, rtaketa@sjsu.edu
- Message-Id: <4.2.0.58.20010115172202.00a20920@bonair.stanford.edu>
Jonathan,
Here's the HTML for the map prototype project I developed for the
California School for the Blind.
First, credit where credit is due. I found the code for the mouse-over on
the web, written by : Pat Friedl of Nebulus Designs, and used it for my
class project, giving them credit in the code. Please do the same and
follow their guidelines for use.
Not knowing how many people will receive this message, I will forward to
you only, the background map (a GIF) and one *.WAV file so you can test
this. If others want these also, just let me know.
The code is enclosed below. The map of the School was scanned, and then
traced in Adobe Illustrator, and I embedded the URL's that called the WAV
files as "Attributes" of each illustrator object. Then I used Adobe
Illustrator to create the image map automatically, manually pasting the
resulting HTML into this script. Alternatively, one could use a Geographic
Information Systems (GIS) application like ESRI's ArcView or MapInfo to
develop an intelligent map that links dynamically with a database
containing various information or sound files, then output a JPEG
file. Or, use web-mapping technology such as ESRI's ArcIMS, Intergraph's
GeoMedia, or Autodesk's MapGuide to interact with the maps and information
dynamically. (Some vendor apps are now available without plugins, and some
vendors are embedding W3C standards including SVG and PNG.
There were a few problems with using Mouse roll-overs that I found during
my study:
1) Image-maps are rectangular while your map, or the objects in your image
may not be. This causes the WAV file to sound while the mouse is not
directly over the correct object. Vector graphics (as in SVG) would
resolve this.
2) While the mouse is traveling to an object at the innermost portion of
your image, the program may speak the WAV files for outermost
objects. Usually it will cut off, and speak the innermost WAV, but there
might be a delay. Also, the program may continue to speak the WAV file you
passed over, even though the mouse has moved off of the feature.
3) The third issue, I was not able to explore during my project, but came
up during my discussion with folks at the CA School for the Blind. How are
standard screen-readers for the blind configured to deal with mouse
roll-overs, while they are also dealing with ALT text from the main
graphic? Perhaps there are some members of http://www.w3.org/Voice/ who
might be able to respond.
I would love any feedback from W3C-WAI members on these items.
Here's to accessible web-mapping!
Regards,
Kristina
<html>
<HEAD>
<script language=javascript>
<!-- // hide script from old browsers
//HTML created & Script modified by Kristina Seyer Smith
// 5-21-00
//Original Javascript Code for rollovers and sound obtained from:
// Roller JavaScript Coder
// written by:
// Pat Friedl of Nebulus Designs
// http://nebulus.org
// This script is (C) 1999
// and is free for non-profit use. This script may not be
// sold or reditributed without express permission of Nebulus Designs.
// For questions, email roller@nebulus.org
// Sound Compatability Check
bVer = parseInt(navigator.appVersion);
loadSound = false;
if(bVer >= 4 && navigator.javaEnabled()) {;
loadSound = true;
}
// Error Handling Code;
function errorHandler() {;
return true;
}
window.onerror = errorHandler;
// Sound Function
function soundPlay(sndAction, sndObj) {
if(loadSound) {
if(navigator.appName == 'Netscape'){
eval('document.' + sndObj + ((sndAction == 'stop')? '.stop()' :
'.play(false)'));
} else {
eval('document.' + sndObj + ((sndAction == 'stop')? '.stop()' :
'.run()'));
}
}
}
// end hiding script -->
</script>
</HEAD>
<body>
<BODY onLoad="soundPlay('play','rollSoundWelcome');window.status='status msg';
return true;" >
<map name="173final">
<area shape="rect" coords="545,4,708,59" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="4,166,86,254" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="81,149,140,228" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="131,131,191,209" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="180,115,240,192" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="229,99,290,174" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="280,82,335,158" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="329,47,439,140" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="436,11,545,101" href="#null"
onMouseOver="soundPlay('play','rollSoundWalnut');window.status='status msg';
return true;" >
<area shape="rect" coords="610,69,624,85" href="#null"
onMouseOver="soundPlay('play','rollSoundNorth');window.status='status msg';
return true;" >
<area shape="rect" coords="117,314,123,319" href="#null"
onMouseOver="soundPlay('play','rollSoundAC28BART');window.status='status msg';
return true;" >
<area shape="rect" coords="275,394,290,410" href="#null"
onMouseOver="soundPlay('play','rollSoundPrincipal');window.status='status msg';
return true;" >
<area shape="rect" coords="366,320,371,324" href="#null"
onMouseOver="soundPlay('play','rollSoundEntrance');window.status='status msg';
return true;" >
<area shape="rect" coords="352,325,358,329" href="#null"
onMouseOver="soundPlay('play','rollSoundEntrance');window.status='status msg';
return true;" >
<area shape="rect" coords="309,339,314,342" href="#null"
onMouseOver="soundPlay('play','rollSoundEntrance');window.status='status msg';
return true;" >
<area shape="rect" coords="309,349,314,354" href="#null"
onMouseOver="soundPlay('play','rollSoundSteps');window.status='status msg';
return true;" >
<area shape="rect" coords="300,336,304,341" href="#null"
onMouseOver="soundPlay('play','rollSoundSteps');window.status='status msg';
return true;" >
<area shape="rect" coords="386,235,407,247" href="#null"
onMouseOver="soundPlay('play','rollSoundPool');window.status='status msg';
return true;" >
<area shape="rect" coords="343,229,379,241" href="#null"
onMouseOver="soundPlay('play','rollSoundTheatre');window.status='status msg';
return true;" >
<area shape="rect" coords="117,314,123,319" href="#null"
onMouseOver="soundPlay('play','rollSoundAc28-Bus');window.status='status msg';
return true;" >
<area shape="rect" coords="294,229,299,234" href="#null"
onMouseOver="soundPlay('play','rollSoundAC23');window.status='status msg';
return true;" >
<area shape="rect" coords="331,482,337,488" href="#null"
onMouseOver="soundPlay('play','rollSoundSchoolBus');window.status='status msg';
return true;" >
<area shape="rect" coords="231,464,391,537" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window.status='status msg';
return true;" >
<area shape="rect" coords="275,394,290,410" href="#null"
onMouseOver="soundPlay('play','rollSoundPrincipal');window.status='status msg';
return true;" >
<area shape="rect" coords="283,340,313,361" href="#null"
onMouseOver="soundPlay('play','rollSoundGrass');window.status='status msg';
return true;" >
<area shape="rect" coords="284,351,311,371" href="#null"
onMouseOver="soundPlay('play','rollSoundGrass');window.status='status msg';
return true;" >
<area shape="rect" coords="262,251,301,281" href="#null"
onMouseOver="soundPlay('play','rollSoundGrass');window.status='status msg';
return true;" >
<area shape="rect" coords="374,286,413,329" href="#null"
onMouseOver="soundPlay('play','rollSoundGrass');window.status='status msg';
return true;" >
<area shape="rect" coords="370,297,411,340" href="#null"
onMouseOver="soundPlay('play','rollSoundGrass');window.status='status msg';
return true;" >
<area shape="rect" coords="430,167,470,210" href="#null"
onMouseOver="soundPlay('play','rollSoundPlayArea');window.status='status msg';
return true;" >
<area shape="rect" coords="456,277,488,308" href="#null"
onMouseOver="soundPlay('play','rollSoundPlayArea');window.status='status msg';
return true;" >
<area shape="rect" coords="152,393,215,527" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window.status='status msg';
return true;" >
<area shape="rect" coords="158,273,260,325" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window.status='status msg';
return true;" >
<area shape="rect" coords="205,316,271,371" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window.status='status msg';
return true;" >
<area shape="rect" coords="163,325,232,450" href="#null"
onMouseOver="soundPlay('play','rollSoundDiag');window.status='status msg';
return true;" >
<area shape="rect" coords="303,306,354,365" href="#null"
onMouseOver="soundPlay('play','rollSoundLibrary');window.status='status msg';
return true;" >
<area shape="rect" coords="345,297,382,348" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window.status='status msg';
return true;" >
<area shape="rect" coords="253,358,314,476" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window.status='status msg';
return true;" >
<area shape="rect" coords="352,218,389,275" href="#null"
onMouseOver="soundPlay('play','rollSoundTheatre');window.status='status msg';
return true;" >
<area shape="rect" coords="371,212,427,269" href="#null"
onMouseOver="soundPlay('play','rollSoundPool');window.status='status msg';
return true;" >
<area shape="rect" coords="402,257,450,302" href="#null"
onMouseOver="soundPlay('play','rollSoundGym');window.status='status msg';
return true;" >
<area shape="rect" coords="411,288,452,324" href="#Rec-Center"
onMouseOver="soundPlay('play','rollSoundRecCenter');window.status='status msg';
return true;" >
<area shape="rect" coords="296,355,380,405" href="#null"
onMouseOver="soundPlay('play','rollSoundAssessment');window.status='status
msg';
return true;" >
<area shape="rect" coords="378,339,438,394" href="#null"
onMouseOver="soundPlay('play','rollSoundDinHall');window.status='status msg';
return true;" >
<area shape="rect" coords="521,185,597,270" href="#null"
onMouseOver="soundPlay('play','rollSoundNorthridge');window.status='status
msg';
return true;" >
<area shape="rect" coords="483,309,563,385" href="#null"
onMouseOver="soundPlay('play','rollSoundWestridge');window.status='status msg';
return true;" >
<area shape="rect" coords="582,315,659,400" href="#null"
onMouseOver="soundPlay('play','rollSoundSouthridge');window.status='status
msg';
return true;" >
<area shape="rect" coords="658,251,676,274" href="#null"
onMouseOver="soundPlay('play','rollSoundEastridge');window.status='status msg';
return true;" >
<area shape="rect" coords="619,251,642,268" href="#null"
onMouseOver="soundPlay('play','rollSoundEastridge');window.status='status msg';
return true;" >
<area shape="rect" coords="641,235,664,252" href="#null"
onMouseOver="soundPlay('play','rollSoundEastridge');window.status='status msg';
return true;" >
<area shape="rect" coords="619,277,642,295" href="#null"
onMouseOver="soundPlay('play','rollSoundEastridge');window.status='status msg';
return true;" >
<area shape="rect" coords="644,277,667,295" href="#null"
onMouseOver="soundPlay('play','rollSoundEastridge');window.status='status msg';
return true;" >
<area shape="rect" coords="372,427,389,452" href="#null"
onMouseOver="soundPlay('play','rollSoundTransp');window
.status='status msg';return true;" >
<area shape="rect" coords="399,450,413,461" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window
.status='status msg';return true;" >
<area shape="rect" coords="401,458,432,482" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window
.status='status msg';return true;" >
<area shape="rect" coords="222,189,282,233" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window
.status='status msg';return true;" >
<area shape="rect" coords="336,150,396,206" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window
.status='status msg';return true;" >
<area shape="rect" coords="230,467,390,540" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window.status='status msg';
return true;" >
<area shape="rect" coords="151,396,214,530" href="#null"
onMouseOver="soundPlay('play','rollSoundParking');window.status='status msg';
return true;" >
<area shape="rect" coords="11,3,746,18" href="#null"
onMouseOver="soundPlay('play','rollSoundWalking');window
.status='status msg';return true;" >
<area shape="rect" coords="0,0,24,612" href="#null"
onMouseOver="soundPlay('play','rollSoundWalking');window
.status='status msg';return true;" >
<area shape="rect" coords="3,601,737,616" href="#null"
onMouseOver="soundPlay('play','rollSoundWalking');window
.status='status msg';return true;" >
<area shape="rect" coords="732,3,751,616" href="#null"
onMouseOver="soundPlay('play','rollSoundWalking');window
.status='status msg';return true;" >
<area shape="rect" coords="264,264,358,318" href="#null"
onMouseOver="soundPlay('play','rollSoundBuilding');window
.status='status msg';return true;" >
</map>
<img src="173final.gif" usemap="#173final" border=none>
<embed src="./northridge.wav" name="rollSoundNorthridge" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./eastridge.wav" name="rollSoundEastridge" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./southridge.wav" name="rollSoundSouthridge" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./westridge.wav" name="rollSoundWestridge" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./ac23.wav" name="rollSoundAC23" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./ac28-to-bart.wav" name="rollSoundAC28BART" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./assess.wav" name="rollSoundAssessment" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./building.wav" name="rollSoundBuilding" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./diag.wav" name="rollSoundDiag" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./dinhall.wav" name="rollSoundDinHall" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./entrance.wav" name="rollSoundEntrance" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./grass.wav" name="rollSoundGrass" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./gym.wav" name="rollSoundGym" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./library.wav" name="rollSoundLibrary" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./north.wav" name="rollSoundNorth" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./parking.wav" name="rollSoundParking" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./pathway.wav" name="rollSoundPathway" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./playarea.wav" name="rollSoundPlayArea" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./pool.wav" name="rollSoundPool" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./principal.wav" name="rollSoundPrincipal" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./schoolbus.wav" name="rollSoundSchoolBus" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./steps.wav" name="rollSoundSteps" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./theatre.wav" name="rollSoundTheatre" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./transp.wav" name="rollSoundTransp" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./walking.wav" name="rollSoundWalking" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./walnut-ave.wav" name="rollSoundWalnut" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
<embed src="./welcome.wav" name="rollSoundWelcome" width=1 height=1 hidden=true
autostart=false loop=false mastersound>
<embed src="./rec-center.wav" name="rollSoundRecCenter" width=1 height=1
hidden=true
autostart=false loop=false mastersound>
</body>
</html>
Kristina Seyer Smith
Manager of Maps and Records
Spatial Information/GIS
Facilities Operations, Maps and Records
327 Bonair Siding
Stanford, CA 94305-7270
650-723-0594 Voice
650-723-7905 FAX
mailto:seyersmith@stanford.edu
http://www-facilities.stanford.edu/maps
Received on Monday, 15 January 2001 21:18:40 UTC