Here is a nifty solution designed to populate a google map with geo location markers and infowindow popup boxes.
First you’ll need to get a Google Maps API developer key.
Then we need to prep the data — we need a csv table with a title, content, latitude and longtitude values:

If you open the file with a text editor it will look like this:
Title,Content,Lat,Long Stonehenge,Stonehenge is a prehistoric monument located in Wiltshire,51.1788823,-1.8262155 Bodiam Castle,Bodiam Castle is a 14th-century moated castle near Robertsbridge in East Sussex,51.002266,0.543549 Eden Project,The Eden Project is an artificial biodome visitor attraction in Cornwall,50.3601344,-4.7447178
Next we need the code that will read the csv file line by line and generate the javascript to feed the data to Google Maps API: https://drive.google.com/folderview?id=0B3bO_ZNaxxnlc2FiLWxfbTZCeFU&usp=sharing
<?php
$data = file_get_contents('google_map_data.csv');
$api_key = 'your key here';
$lines = explode("\n",$data);
foreach ($lines as $key => $value){
if ($key>0&&strlen($value)>20){ // skip csv header row and blank rows
$line = explode(",",$value);
$markers[$key] = trim($line[0]).','.trim($line[1]).','.trim($line[2]).','.trim($line[3]); // title,content,lat,long
}
}
?>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0;}
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=<?=$api_key?>">
</script>
<script type="text/javascript">
var map;
var marker = {};
function initialize() {
var mapOptions = {
center: { lat: 51.1788823, lng: -1.8262155},
zoom: 5
};
map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
var markers = [];
<?php
$counter = 0;
foreach ($markers as $index => $list){
$marker_details = explode(',',$list);
echo 'markers["m'.($index-1).'"] = {};'."\n";
echo "markers['m".($index-1)."'].lat = '".$marker_details[2]."';\n";
echo "markers['m".($index-1)."'].lon = '".$marker_details[3]."';\n";
echo "markers['m".($index-1)."'].name = '".$marker_details[0]."';\n";
echo "markers['m".($index-1)."'].content = '".$marker_details[1]."';\n";
$counter++;
}
?>
var totalMarkers = <?=$counter?>;
var i = 0;
var infowindow;
var contentString;
for (var i = 0; i<totalMarkers; i++){
contentString = '<div class="content">'+
'<h1 class="firstHeading">'+markers['m'+i].name+'</h1>'+
'<div class="bodyContent">'+
'<p>'+markers['m'+i].content+'</p>'+
'</div>'+
'</div>';
infowindow = new google.maps.InfoWindow({
content: contentString
});
marker['c'+i] = new google.maps.Marker({
position: new google.maps.LatLng(markers['m'+i].lat,markers['m'+i].lon),
map: map,
title: markers['m'+i].name,
infowindow: infowindow
});
//console.log(markers['m'+i].lat+','+markers['m'+i].lon);
google.maps.event.addListener(marker['c'+i], 'click', function() {
for (var key in marker){
marker[key].infowindow.close();
}
this.infowindow.open(map, this);
});
}
}
function panMap(la,lo){
map.panTo(new google.maps.LatLng(la,lo));
}
function openMarker(mName){
//console.log(marker);
for (var key in marker){
marker[key].infowindow.close();
}
for (var key in marker){
if (marker[key].title.search(mName) != -1){
marker[key].infowindow.open(map,marker[key]);
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
Thats it, when you run the php file you will be presented with a google map that can be embedded using an iframe tag.
Here is an example of the Kwik Fit location markers placed on a Google map
You can extend the script with custom icons by adding another column to the csv file with the icon file path and adding an “icon:markers[‘m’+i].icon” option to the google.maps.Marker function.
Hi, this is a good example, however when i tried it out i receive an error when i launch the website
The error is:
This page didn’t load Google Maps correctly. See the JavaScript console for technical details.
How can I fix this?
Hi, I have managed to fix my inital problem
My next problem is how am I supposed to change the marker icon? What you have mentioned, is not working. Am I supposed to add anything else?
Please look up the google’s api documentation for more info on markers
Just wanted to thank you for keeping this post here with good links!
I have found it perfect for a sandbox except one thing:
where in the code do I place the string for a custom icon?
“icon:markers[‘m’+i].icon” where exactly does that go?
What should I name the header in the csv for that?
Appreciate it!