MunzeeMap

Munzee filter map script

当前为 2015-08-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name MunzeeMap
  3. // @namespace MunzeeMap
  4. // @include http*://www.munzee.com/map*
  5. // @version 2.0.3
  6. // @grant none
  7. // @description Munzee filter map script
  8. // ==/UserScript==
  9.  
  10. jQuery(document).ready(function ($) {
  11. var img_url = 'https://dl.dropboxusercontent.com/u/3657753/munzee/';
  12. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  13. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  14. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  15. })(window,document,'script','//www.google-analytics.com/analytics.js','ga3');
  16.  
  17. ga3('create', 'UA-3267689-27', 'auto');
  18. ga3('send', 'pageview');
  19.  
  20. var icons = [];
  21. var perFilter = [];
  22. var filterOn = false;
  23. var n = 0;
  24. var i = 0;
  25. var kiek = [];
  26. var geoLink;
  27. $('body').css('position', 'relative').append('<div style="padding: 10px; border-radius: 5px; border: 1px solid #dedede;position: fixed; z-index: 2000; bottom:10px; left: 10px; background: white;" id="filterIcons"></div>');
  28. $(document).ajaxSuccess(function (event, xhr, settings) {
  29. kiek = [];
  30. $.each(allmarkers, function (key, data) {
  31. var caps = data.number_of_captures;
  32. if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/motel.svg?3' && caps < 5) {
  33. data.icon.url = img_url+'motel' + caps + '.png';
  34.  
  35. }
  36. if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/hotel.svg?3' && caps < 10) {
  37.  
  38. data.icon.url = img_url+'munzee_hotel'+caps+'.png';
  39.  
  40. }
  41. if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/virtual.svg?3') {
  42.  
  43. data.icon.url = img_url+'virtual.png';
  44.  
  45. }
  46. if (kiek[data.icon.url] == undefined) {
  47. kiek[data.icon.url] = 0;
  48. }
  49.  
  50. kiek[data.icon.url]++;
  51.  
  52. if (data.getMap() != null) {
  53.  
  54. // add new icon to list
  55. if ($.inArray(data.icon.url, icons) == -1) {
  56. icons[i++] = data.icon.url;
  57. }
  58. // hide icon if in filter list
  59. if ($.inArray(data.icon.url, perFilter) != -1) {
  60. data.setMap(null);
  61. }
  62. }
  63. });
  64.  
  65. // ICONS list
  66. var iconsList = '';
  67. var style = '';
  68. var clase = '';
  69. $.each(icons.sort(), function (key, data) {
  70.  
  71. if ($.inArray(data, perFilter) != -1) {
  72. style = 'opacity:0.4; background: red; border:3px red solid;';
  73. clase = 'ico_hide';
  74. } else {
  75. style = 'background: white; border:3px white solid;';
  76. clase = 'ico_show';
  77. }
  78. if (kiek[data] == undefined) {
  79. kiek[data] = 0;
  80. }
  81. iconsList += '<div style="padding: 0 5px 0 0;float:left;">';
  82. iconsList += '<div style="text-align: center; font-size: 10px">' + kiek[data] + '</div>';
  83. iconsList += '<img style="' + style + 'cursor:pointer; border-radius: 500px" class="haideris ' + clase + '" height="32px" src="' + data + '" title="Right mouse click\nto hide other icons" />';
  84. // iconsList += '<div class="only_this" style="cursor:pointer;text-align: center; font-size: 10px" data-icon="' +data+ '" >ONLY</div>';
  85. iconsList += '</div>';
  86. });
  87. $('#filterIcons').html(iconsList +
  88. '<div style="float: right">'+
  89. '</form>' +
  90. '</div>'+
  91. '<div style="float: right">' +
  92. '<a id="geoReload" href="'+geoLink+'" title="Get link to this map position"><i class="fa fa-external-link"></i></a><br />' +
  93. '<a href="'+geoLink+'" title="Reload map"><i class="fa fa-refresh"></i></a>' +
  94. '</div>'+
  95.  
  96. '<div style="clear:both;height: 1px; overflow: hidden"></div>');
  97.  
  98. });
  99. // hide
  100. $(document).on('click', '.ico_show.haideris', function () {
  101. filterOn = true;
  102. $(this).removeClass('ico_show').addClass('ico_hide').css('opacity', '0.4').css('background', 'red').css('border', '3px red solid');
  103. var curr = $(this).attr('src');
  104. perFilter[n++] = curr;
  105. $.each(allmarkers, function (key, data) {
  106. if (data.icon.url == curr) {
  107. data.setMap(null);
  108. }
  109. });
  110. });
  111. // show
  112. $(document).on('click', '.ico_hide.haideris', function () {
  113. filterOn = true;
  114. $(this).removeClass('ico_hide').addClass('ico_show').css('opacity', '1').css('background', 'white').css('border', '3px white solid');
  115. var curr = $(this).attr('src');
  116.  
  117. perFilter[$.inArray(curr, perFilter)] = null;
  118. $.each(allmarkers, function (key, data) {
  119. if (data.icon.url == curr) {
  120. data.setMap(the_map);
  121. }
  122. });
  123. });
  124. $(document).on('contextmenu', '.haideris', function (e) {
  125. filterOn = true;
  126. $('.haideris').removeClass('ico_show').addClass('ico_hide').css('opacity', '0.4').css('background', 'red').css('border', '3px red solid');
  127. var curr = $(this).attr('src');
  128. var tempFilter = [];
  129. var t = 0;
  130. $.each(icons, function (key, data) {
  131. if (curr != data) {
  132. tempFilter[t++] = data;
  133. }
  134.  
  135. });
  136. perFilter = tempFilter;
  137. perFilter[$.inArray(curr, perFilter)] = null;
  138. $.each(allmarkers, function (key, data) {
  139. if (data.icon.url != curr) {
  140. data.setMap(null);
  141. }
  142. });
  143.  
  144. $(this).removeClass('ico_hide').addClass('ico_show').css('opacity', '1').css('background', 'white').css('border', '3px white solid');
  145.  
  146. perFilter[$.inArray(curr, perFilter)] = null;
  147. $.each(allmarkers, function (key, data) {
  148. if (data.icon.url == curr) {
  149. data.setMap(the_map);
  150. }
  151. });
  152. e.preventDefault();
  153. });
  154. // GEO
  155. google.maps.event.addListener(the_map, 'idle', function() {
  156. var mapCenter = the_map.getCenter();
  157. var mapZoom = the_map.getZoom();
  158. var lat = mapCenter.lat();
  159. var lon = mapCenter.lng();
  160. var code = geohash.encode( lat, lon, 9 );
  161. geoLink = 'https://www.munzee.com/map/'+code+'/'+mapZoom;
  162. $('#geoReload').attr('href',geoLink);
  163.  
  164. // console.log(geoLink);
  165. });
  166. $(document).on('click','#geoReload', function(){
  167. window.prompt(" Copy to clipboard: Ctrl+C, Enter ", geoLink);
  168. return false;
  169. });
  170.  
  171. });