JSFiddle - React, Tailwind, and code Playground
by Matt Hopkins
HTML
<div id="geoLink">
</div>
<div id="smsLink">
</div>
JavaScript
(function() {
if (getQueryVariable('q') && /^[0-9,.,-]*$/.test(getQueryVariable('q'))) {
var latlng = getQueryVariable('q')
switch (getMobileOperatingSystem()) {
case 'iOS':
appleDetected();
break;
case 'Android':
androidDetected();
break;
case 'unknown':
unknownDetected();
break;
default:
unknownDetected();
break;
}
} else {
if (navigator.geolocation) {
var geoOptions = {
enableHighAccuracy: true,
maximumAge: 30000,
timeout: 27000
};
navigator.geolocation.watchPosition(geoSuccess, displayGeoError, geoOptions);
} else {
//Browser-Update.org
var $buoop = {
c: 2
};
function $buo_f() {
var e = document.createElement("script");
e.src = "//browser-update.org/update.min.js";
document.body.appendChild(e);
};
try {
document.addEventListener("DOMContentLoaded", $buo_f, false)
} catch (e) {
window.attachEvent("onload", $buo_f)
}
}
}
})()
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return (false);
}
function getMobileOperatingSystem() {
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
return 'iOS';
} else if (userAgent.match(/Android/i)) {
return 'Android';
} else {
return 'unknown';
}
}
//Apple
function appleDetected() {
document.location = 'maps://?ll=' + latlng;
!window.document.webkitHidden && setTimeout(function() {
setTimeout(function() {
window.location = '//maps.google.com/maps?ll=' + latlng;
}, 100);
}, 600);
}
//Android
function...