Replace Google Maps with OpenStreetMap on Metafilter
// ==UserScript==
// @name Mefi OSM
// @namespace exp?zworp!
// @version 0.667
// @description Replace Google Maps with OpenStreetMap on Metafilter
// @author farlukar
// @match https://www.metafilter.com/user/*
// @match https://irl.metafilter.com/*
// @grant none
// ==/UserScript==
// link in user profile
if (document.URL.match(/https:\/\/www.metafilter.com\/user\/*/)) {
let mapLink = document.querySelector("a[title='View on Google Maps']");
let coordinates = mapLink.href.replace(/.*ll=([^&]*)&.*/,"\$1").split(',');
mapLink.href = "https://www.openstreetmap.org/?mlat=" + coordinates[0] + "&mlon=" + coordinates[1] + "#map=4/" + coordinates[0] + "/" + coordinates[1];
mapLink.title = "View on OpenStreetMap";
}
// map in irl
if (document.URL.match(/https:\/\/irl.metafilter.com\/*/)) {
let address = document.querySelector("div#address a");
let ll = address.href.split('@');
let coordinates = ll[1].split(',');
let lat = Number(coordinates[0]);
let lon = Number(coordinates[1]);
let toplat = String(lat + 0.005);
let bottomlat = String(lat - 0.005);
let leftlon = String(lon - 0.013);
let rightlon = String(lon + 0.013);
lat = String(lat);
lon = String(lon);
let showMap = document.getElementById("map");
showMap.innerHTML = "<iframe width='580' height='200' frameborder='0' scrolling='no' style='margin:0' src='https://www.openstreetmap.org/export/embed.html?bbox=" + leftlon + "," + bottomlat + "," + rightlon +"," + toplat + "&marker=" + lat + "," + lon + "'></iframe>";
address.href = "https://www.openstreetmap.org/directions?engine=osrm_car&route=;" + lat + "," + lon + "#map=12/" + lat + "/" +lon;
}