WME GIS

Displays the locality of the current location, and adds a button to open the GIS if available

当前为 2016-07-18 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name WME GIS
  3. // @author @Philistine11
  4. // @namespace https://greasyfork.org/en/users/53803
  5. // @description Displays the locality of the current location, and adds a button to open the GIS if available
  6. // @include https://www.waze.com/editor/*
  7. // @version 1.1.2
  8. // ==/UserScript==
  9.  
  10. function gis_init() {
  11. var location = $('div.location-info-region');
  12. if (location.length===0) {
  13. setTimeout(gis_init, 500);
  14. return;
  15. }
  16. location.after('<div style="float:left"><div class="location-info">&nbsp;-&nbsp;<span id="locality"></span>&nbsp;<a id="gis" class="btn btn-default disabled" style="vertical-align:top" target="_blank" href="#">GIS</a></div></div>');
  17.  
  18. var states = {};
  19. $.getJSON('https://script.google.com/macros/s/AKfycbx2bytvT5Un0TWcaU7BpVkauqeE8zqt8Mek7Zq-OF-bznGYDyZw/exec?link=10dR8z16eKPHeI-ywLcHh2UNS3enQ7gt36Hhzm9nOJbA', function(rows) {
  20. for (var row in rows)
  21. states[rows[row][0]] = rows[row][1];
  22. });
  23.  
  24. W.map.events.register('moveend', null, function() {
  25. var center = W.map.getCenter().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
  26. $.getJSON('https://maps.googleapis.com/maps/api/geocode/json?latlng='+center.lat+','+center.lon, function(data) {
  27. if(data.status === "OK"){
  28. var locs = data.results[0].address_components;
  29. var state = "";
  30. var locality = "";
  31. for (var loc = 0; loc < locs.length; loc++) {
  32. if (locs[loc].types.indexOf("administrative_area_level_1") != -1)
  33. state = locs[loc].short_name;
  34. else if (locs[loc].types.indexOf("administrative_area_level_2") != -1)
  35. locality = locs[loc].short_name;
  36. else if (locs[loc].types.indexOf("locality") != -1 && locality === "")
  37. locality = 'City of ' + locs[loc].short_name;
  38. }
  39.  
  40. $('#locality').text(locality);
  41. $('#gis').prop('href', '#').addClass('disabled');
  42.  
  43. if (states.hasOwnProperty(state)) {
  44. $('#gis').removeClass('hidden');
  45. $.get('https://script.google.com/macros/s/AKfycbx2bytvT5Un0TWcaU7BpVkauqeE8zqt8Mek7Zq-OF-bznGYDyZw/exec?link='+states[state], function(rows) {
  46. for (var row in rows)
  47. if (rows[row][0] == locality && rows[row][1] !== "") {
  48. $('#gis').prop('href', rows[row][1].replace('<lat>',center.lat).replace('<lon>',center.lon).replace('<zoom>',W.map.getZoom()+12)).removeClass('disabled');
  49. break;
  50. }
  51. });
  52. } else
  53. $('#gis').addClass('hidden');
  54. }
  55. });
  56. });
  57. }
  58.  
  59. gis_init();