Recently I needed to add icons and circles to a Google Map. My colleague Jan Sipke did a nice write up on this topic a couple of years ago. Unfortunatly things did change since then. Google released a new version of the Maps API (3.8 at the time of writing) and the resources that were used in his writeup moved to new locations. That why I decided to write an update on his story.
I wanted to achieve something like this:
I downloaded the icon from the same source as Jan Sipke did: The Map Icons Collection.
![]()
Only the site moved to a new location. The site features a great set of nice icons you can use on Google Maps. Check them out!
I used Matt Williamson’s Google Maps Circle Overlays to draw the circles. This script uses miles for the radius of the circle. I wanted to use kilo meters and made a simple function that converts kilo meters into miles.
The following code wraps this all up into the result I was looking for:
<!DOCTYPE html>
<html>
<head>
<title>Google Maps icons and circles revisted</title>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?key=YOUR_KEY&sensor=false"/>
<script src="scripts/maps.google.circleoverlay.js"
type="text/javascript"/>
<script type="text/javascript">
var IconsAndCircles = {
map: null,
KMS_THAT_MAKE_A_MILE: 1.609344,
/* converts a distances in kilo meters into miles */
kmToMiles: function(distanceInKm) {
return distanceInKm / this.KMS_THAT_MAKE_A_MILE;
}
/* show a maker on the map */
showMarker: function(point) {
// create a marker with an icon
marker = new google.maps.Marker(
{position: point, map: map, icon: 'res/wifi.png'}
);
// Create and add a circle for 200 meters
new CircleOverlay(
map, point, this.kmToMiles(0.2),
"#0000FF", 0, 1, '#0000FF', 0.10
);
// Create and add a circle for 50 meters
new CircleOverlay(
map, point, this.kmToMiles(0.05),
"#0000FF", 0, 1, '#0000AA', 0.25
);
},
/* loads the map */
load: function() {
// Create Map
var center = new google.maps.LatLng(52.026129,4.357066);
map = new google.maps.Map(document.getElementById("map"), {
center: center,
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
this.showMarker(map.getCenter());
}
};
</script>
</head>
<body onload="IconsAndCircles.load()">
<div id="map" style="width: 100%; height: 500px; border: 1px solid #666666;"/>
</body>
</html>
After I wrote this code I found that Google also offers a way to create circles on a map in the Maps API. You might want to check out their example as well.
