summaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts/helpers/google-maps.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/helpers/google-maps.js')
-rw-r--r--src/assets/javascripts/helpers/google-maps.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/assets/javascripts/helpers/google-maps.js b/src/assets/javascripts/helpers/google-maps.js
new file mode 100644
index 0000000..3a041c6
--- /dev/null
+++ b/src/assets/javascripts/helpers/google-maps.js
@@ -0,0 +1,43 @@
+export default class {
+ static targets = /https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
+ static redirects = ["https://openstreetmap.org"];
+ static mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
+ static dataLatLngRegex = /(!3d|!4d)(-?[0-9]{1,10}.[0-9]{1,10})/g;
+ static placeRegex = /\/place\/(.*)\//;
+ static travelModes = {
+ driving: "fossgis_osrm_car",
+ walking: "fossgis_osrm_foot",
+ bicycling: "fossgis_osrm_bike",
+ transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
+ };
+ static layers = {
+ none: "S",
+ transit: "T",
+ traffic: "S", // not implemented on OSM, default to standard.
+ bicycling: "C",
+ };
+ static addressToLatLng(address, callback) {
+ const xmlhttp = new XMLHttpRequest();
+ xmlhttp.onreadystatechange = () => {
+ if (xmlhttp.readyState === XMLHttpRequest.DONE) {
+ if (xmlhttp.status === 200) {
+ const json = JSON.parse(xmlhttp.responseText)[0];
+ if (json) {
+ callback(
+ `${json.lat}%2C${json.lon}`,
+ `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`
+ );
+ }
+ } else {
+ console.info("Error: Status is " + xmlhttp.status);
+ }
+ }
+ };
+ xmlhttp.open(
+ "GET",
+ `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`,
+ false
+ );
+ xmlhttp.send();
+ }
+}