A Closer Look at Smart Markers with Yahoo! Maps - Inserting smart markers into a satellite map
(Page 2 of 4 )
As I expressed in the introduction, the goal of this particular tutorial is to demonstrate how to incorporate diverse smart markers into different Yahoo! Maps. So bearing this in mind, I’m going to start by showing you a concrete example where these markers are displayed on a satellite-based map.
This being said, please have a close look at the following code sample:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example on using smart markers with satellite YAHOO! Map</title>
<script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?
v=3.7&appid=Your-AP-ID"></script>
<style type="text/css">
body{
padding: 0;
margin: 0;
background: #fff;
}
h1{
font: bold 16pt Arial, Helvetica, sans-serif;
color: #000;
text-align: center;
}
#mapcontainer{
height: 400px;
width: 500px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<h1>Example on using smart markers with satellite YAHOO! Map</h1>
<div id="mapcontainer"></div>
<script type="text/javascript">
function initializeMap(){
// Create a new map object
var map=new YMap(document.getElementById('mapcontainer'));
// Add type controls to the map
map.addTypeControl();
// Add the Pan Control to the map
map.addPanControl();
// Add long zoom control to the map
map.addZoomLong();
// Set map type to YAHOO_MAP_SAT
map.setMapType(YAHOO_MAP_SAT);
// Display the map centered on the selected location
map.drawZoomAndCenter("Los Angeles",3);
// Add an event to report to our Logger
YEvent.Capture(map,EventsList.MouseClick,displaySmartMarker);
// display smartMarker
function displaySmartMarker(_e,_c){
var geoPoint=new YGeoPoint(_c.Lat,_c.Lon);
var newMarker= new YMarker(geoPoint);
// call 'autoexpand()' method
newMarker.addAutoExpand('This is a smart marker');
// add HTML to the smart marker
var markerHTML= '<p>This is the markup<br />';
markerHTML+='of the smart marker</p>';
YEvent.Capture(newMarker,EventsList.MouseClick,function()
{newMarker.openSmartWindow(markerHTML)});
map.addOverlay(newMarker);
}
}
window.onload=function(){
initializeMap();
}
</script>
</body>
</html>
Despite the fact that the previous practical example may look rather complex at first, it’s quite simple to grasp. First, a satellite map is built using the “YMap” JavaScript class, and then, the pertinent smart markers are constructed via another handy JavaScript class, called “YMarker.”
Also, it’s worthwhile to note here that each of the smart markers are created and dropped into the map by using a custom callback function, named “displaySmartMarker().” This is invoked each time a mouse click occurs within the map in question. As you learned in the previous article of the series, this event is properly handled by the “YEvent.Capture” JavaScript class, which is part of the Yahoo! UI library.
And finally, you should pay careful attention first to the way that smart markers are turned into “auto expandable” elements via the use of the corresponding “addAutoExpand()” method, and second to the manner in which they’re displayed on the selected map, which in this case was by using a dynamic box, called “smartWindow.” This can be hidden and shown alternatively in response to specific events, like mouse clicks, for instance.
Of course, the characteristic that turns a basic marker into a smart one is its capacity to include additional markup on its own. In the previous example, I decided to include an extra paragraph in each marker, but you can use other tags that probably will better suit your personal needs.
In either case, the functionality of smart markers will be best understood if you have a look at the following image, which demonstrates how they work. Here it is:

So far, so good. At this point, you hopefully learned the key concepts surrounding the incorporation of a few smart markers into a satellite Yahoo! Map. So, what’s next? Well, in the upcoming section of this tutorial, I’m going to teach you how to utilize the same smart markers that you learned earlier, but this time in conjunction with a regional map.
To see how this process will be achieved, please click on the link that appears below and keep reading.
Next: Dropping smart markers in a regional Yahoo! Map >>
More JavaScript Articles
More By Alejandro Gervasio