MunzeeMap

Munzee filter map script

目前為 2015-08-12 提交的版本,檢視 最新版本

// ==UserScript==
// @name        MunzeeMap
// @namespace   MunzeeMap
// @include     http*://www.munzee.com/map*
// @version     2.0.3
// @grant       none
// @description Munzee filter map script
// ==/UserScript==

jQuery(document).ready(function ($) {
	var img_url = 'https://dl.dropboxusercontent.com/u/3657753/munzee/';
			
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga3');

  ga3('create', 'UA-3267689-27', 'auto');
  ga3('send', 'pageview');

	var icons = [];
	var perFilter = [];
	var filterOn = false;
	var n = 0;
	var i = 0;
	var kiek = [];
    var geoLink;
	$('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>');
	$(document).ajaxSuccess(function (event, xhr, settings) {
		kiek = [];
		$.each(allmarkers, function (key, data) {
			var caps = data.number_of_captures;
			if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/motel.svg?3' && caps < 5) {
				data.icon.url = img_url+'motel' + caps + '.png';

			}
			if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/hotel.svg?3' && caps < 10) {

				data.icon.url = img_url+'munzee_hotel'+caps+'.png';

			}
			if (data.icon.url == 'https://munzee.global.ssl.fastly.net/images/pins/svg/virtual.svg?3') {

				data.icon.url = img_url+'virtual.png';

			}
			if (kiek[data.icon.url] == undefined) {
				kiek[data.icon.url] = 0;
			}

			kiek[data.icon.url]++;

			if (data.getMap() != null) {

				// add new icon to list
				if ($.inArray(data.icon.url, icons) == -1) {
					icons[i++] = data.icon.url;
				}
				// hide icon if in filter list
				if ($.inArray(data.icon.url, perFilter) != -1) {
					data.setMap(null);
				}
			}
		});

		// ICONS list
		var iconsList = '';
		var style = '';
		var clase = '';
		$.each(icons.sort(), function (key, data) {

			if ($.inArray(data, perFilter) != -1) {
				style = 'opacity:0.4; background: red; border:3px red solid;';
				clase = 'ico_hide';
			} else {
				style = 'background: white; border:3px white solid;';
				clase = 'ico_show';
			}
			if (kiek[data] == undefined) {
				kiek[data] = 0;
			}
			iconsList += '<div style="padding: 0 5px 0 0;float:left;">';
			iconsList += '<div style="text-align: center; font-size: 10px">' + kiek[data] + '</div>';
			iconsList += '<img style="' + style + 'cursor:pointer; border-radius: 500px" class="haideris ' + clase + '" height="32px" src="' + data + '" title="Right mouse click\nto hide other icons" />';
			//	iconsList += '<div class="only_this" style="cursor:pointer;text-align: center; font-size: 10px" data-icon="' +data+ '" >ONLY</div>';
			iconsList += '</div>';
		});
		$('#filterIcons').html(iconsList +
			'<div style="float: right">'+
			'</form>' +
			'</div>'+
			'<div style="float: right">' +
            '<a id="geoReload" href="'+geoLink+'" title="Get link to this map position"><i class="fa fa-external-link"></i></a><br />' +
            '<a href="'+geoLink+'" title="Reload map"><i class="fa fa-refresh"></i></a>' +
            '</div>'+

			'<div style="clear:both;height: 1px; overflow: hidden"></div>');

	});
// hide
	$(document).on('click', '.ico_show.haideris', function () {
		filterOn = true;
		$(this).removeClass('ico_show').addClass('ico_hide').css('opacity', '0.4').css('background', 'red').css('border', '3px red solid');
		var curr = $(this).attr('src');
		perFilter[n++] = curr;
		$.each(allmarkers, function (key, data) {
			if (data.icon.url == curr) {
				data.setMap(null);
			}
		});
	});
// show
	$(document).on('click', '.ico_hide.haideris', function () {
		filterOn = true;
		$(this).removeClass('ico_hide').addClass('ico_show').css('opacity', '1').css('background', 'white').css('border', '3px white solid');
		var curr = $(this).attr('src');

		perFilter[$.inArray(curr, perFilter)] = null;
		$.each(allmarkers, function (key, data) {
			if (data.icon.url == curr) {
				data.setMap(the_map);
			}
		});
	});
	$(document).on('contextmenu', '.haideris', function (e) {
		filterOn = true;
		$('.haideris').removeClass('ico_show').addClass('ico_hide').css('opacity', '0.4').css('background', 'red').css('border', '3px red solid');
		var curr = $(this).attr('src');
		var tempFilter = [];
		var t = 0;
		$.each(icons, function (key, data) {
			if (curr != data) {
				tempFilter[t++] = data;
			}

		});
		perFilter = tempFilter;
		perFilter[$.inArray(curr, perFilter)] = null;
		$.each(allmarkers, function (key, data) {
			if (data.icon.url != curr) {
				data.setMap(null);
			}
		});

		$(this).removeClass('ico_hide').addClass('ico_show').css('opacity', '1').css('background', 'white').css('border', '3px white solid');

		perFilter[$.inArray(curr, perFilter)] = null;
		$.each(allmarkers, function (key, data) {
			if (data.icon.url == curr) {
				data.setMap(the_map);
			}
		});
		e.preventDefault();
	});
    // GEO
    google.maps.event.addListener(the_map, 'idle', function() {
        var mapCenter = the_map.getCenter();
        var mapZoom = the_map.getZoom();
        var lat = mapCenter.lat();
        var lon = mapCenter.lng();
        var code = geohash.encode( lat, lon, 9 );
        geoLink = 'https://www.munzee.com/map/'+code+'/'+mapZoom;
        $('#geoReload').attr('href',geoLink);

       // console.log(geoLink);
    });
    $(document).on('click','#geoReload', function(){
        window.prompt("                   Copy to clipboard: Ctrl+C, Enter                    ", geoLink);
        return false;
    });

});