Skip to content

Instantly share code, notes, and snippets.

@fredrik-corneliusson
Created December 13, 2012 20:23
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fredrik-corneliusson/4279473 to your computer and use it in GitHub Desktop.
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
// ==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