Created
December 13, 2012 20:23
-
-
Save fredrik-corneliusson/4279473 to your computer and use it in GitHub Desktop.
Ett litet Greasemonkey skript som utökar Göteborgs Postens skolkarta så att den visar betyg med färger på kartmarkörerna.
Skriptet kan enkelt göras om till en bookmarklet mha: http://ted.mielczarek.org/code/mozilla/bookmarklet.html
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Pimpa GP skolkarta | |
// @namespace squeed.skolor | |
// @include http://www.gp.se/nyheter/goteborg/goteborgsskolor/* | |
// @version 1 | |
// ==/UserScript== | |
// Tip: To convert to bookmarklet use: http://ted.mielczarek.org/code/mozilla/bookmarklet.html | |
// and just paste the whole file content. | |
function pimpGPsSkolKarta() { | |
var icons = { | |
"IG" : "http://www.google.com/intl/en_us/mapfiles/ms/icons/red-dot.png", | |
"G" : "http://www.google.com/intl/en_us/mapfiles/ms/icons/yellow-dot.png", | |
"VG" : "http://www.google.com/intl/en_us/mapfiles/ms/icons/blue-dot.png", | |
"MVG" : "http://www.google.com/intl/en_us/mapfiles/ms/icons/green-dot.png" | |
}; | |
// have to use the geo position to figure out what marker represents what school | |
var geo_position_to_school_mapping = {}; | |
var markers = null; | |
var schools = null; | |
// start periodic check for when map is ready | |
var timer_id_check_map_ready = setInterval(function() { | |
waitForMapReady() | |
}, 300); | |
var waitForMapReady = function() { | |
if (isMapReady()) { | |
// turn off timer event | |
clearInterval(timer_id_check_map_ready); | |
parseSchools(); | |
updateMarkerIcons(markers); | |
} | |
}; | |
var isMapReady = function() { | |
if (mktmp.spots_ready === 1 && !!mktmp.mgr && !!mktmp.mgr[0].markers) { | |
markers = mktmp.mgr[0].markers; | |
schools = mktmp.spots[0].spots; | |
return markers.length === schools.length; | |
} | |
}; | |
var parseSchools = function() { | |
for (var i = 0, j = schools.length; i < j; i++) { | |
addGeoPosition2SchoolMapping(schools[i]); | |
} | |
var msg = "Pimpar skolkartan!"; | |
msg += "\n" + schools.length + " skolor\n"; | |
alert(msg); | |
}; | |
var addGeoPosition2SchoolMapping = function(school) { | |
var latitudeAndLongitudeOne = new google.maps.LatLng(school.latitude, school.longitude); | |
var pos_string_val = latitudeAndLongitudeOne.toUrlValue(); | |
geo_position_to_school_mapping[pos_string_val] = school; | |
}; | |
var getSchoolForMarker = function(marker) { | |
// use the markers geoposition to get the school | |
return geo_position_to_school_mapping[marker.getPosition().toUrlValue()]; | |
}; | |
var updateMarkerIcons = function(markers) { | |
markers.each(function(marker) { | |
var school = getSchoolForMarker(marker); | |
var grade = getGrade(school); | |
var icon = icons[grade]; | |
marker.setIcon(icon); | |
}); | |
}; | |
var getGrade = function(school) { | |
var info = school.summary; | |
var grade = "G"; | |
if (info.indexOf("IG") !== -1) { | |
grade = "IG"; | |
} else if (info.indexOf("MVG") !== -1) { | |
grade = "MVG"; | |
} else if (info.indexOf("VG") !== -1) { | |
grade = "VG"; | |
} | |
return grade; | |
}; | |
}; | |
pimpGPsSkolKarta(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment