Update: I think there's a better way to do this. See this blog entry.
I wanted to add a "Loading..." message to a Google map app I was working (and will hopefully get to share with you soon). But I found that my attempts to get content to appear over the map didn't work. Assume for a second I had like:
<script type='text/javascript'>
function displayMessage(m) {
// use Prototype style access
$('message').innerHTML = 'Loading...';
$('message').style.display = 'block';
}
function hideMessage(m) {
$('message').style.display = 'none';
}
// JavaScript to setup events so that dislayMessage(...) is called when
// we are loading
</script>
When I tried to put the element message over the map, it didn't quite work. I tried:
- Putting content in the message element as a child of the main map tag. That is:
<div id='map'> <div id='message'></div> </div>
- Using the method getContainer on a Google Map object to get a hold of the div tag:
map.getContainer().appendChild(
...code to build up message dynamically...);
What finally did work was nice and simple - absolute positioning of an element, and setting its z-index. So I did:
<!-- on the page -->
<div id='map-container'>
<div id='message'></div>
<div id='map'></div>
</div>
/* in CSS */
#map-container { position: relative; }
#map { width: 300px; height: 300px; }
#message {
position: absolute;
top: 0px; left: 0px;
width: 300px; height: 300px;
display: none; /* start off hidden */
z-index: 10; /* make sure message is on top of the map */
}
Thx, great tip. This helped me a lot. Works fine in combination with scriptaculous.
ReplyDeleteThanks for this! I was trying to do the same thing and found this very helpful.
ReplyDeleteThanks
ReplyDelete