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...