diff --git a/plugins/keys-on-map.user.js b/plugins/keys-on-map.user.js new file mode 100644 index 00000000..91a26e47 --- /dev/null +++ b/plugins/keys-on-map.user.js @@ -0,0 +1,114 @@ +// ==UserScript== +// @id iitc-plugin-keys-on-map@xelio +// @name IITC plugin: Keys on map +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Show keys in keys plugin on map. +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// ==/UserScript== + +function wrapper() { +// ensure plugin framework is there, even if iitc is not yet loaded +if(typeof window.plugin !== 'function') window.plugin = function() {}; + + +// PLUGIN START //////////////////////////////////////////////////////// + +// use own namespace for plugin +window.plugin.keysOnMap = function() {}; + +window.plugin.keysOnMap.keyLayers = {}; +window.plugin.keysOnMap.keyLayerGroup = new L.LayerGroup(); + +// Use portal add and remove event to control render of keys +window.plugin.keysOnMap.portalAdded = function(data) { + data.portal.on('add', function() { + plugin.keysOnMap.renderKey(this.options.guid, this.getLatLng()); + }); + + data.portal.on('remove', function() { + plugin.keysOnMap.removeKey(this.options.guid); + }); +} + +window.plugin.keysOnMap.keyUpdate = function(data) { + var portal = window.portals[data.guid]; + if(!portal) return; + var latLng = portal.getLatLng(); + + plugin.keysOnMap.renderKey(data.guid, latLng) +} + +window.plugin.keysOnMap.renderKey = function(guid,latLng) { + plugin.keysOnMap.removeKey(guid); + + var keyCount = plugin.keys.keys[guid]; + if (keyCount > 0) { + var key = L.marker(latLng, { + icon: L.divIcon({ + className: 'plugin-keys-on-map-key', + iconAnchor: [6,7], + iconSize: [12,10], + html: keyCount + }), + guid: guid + }); + + plugin.keysOnMap.keyLayers[guid] = key; + key.addTo(plugin.keysOnMap.keyLayerGroup); + } +} + +window.plugin.keysOnMap.removeKey = function(guid) { + var previousLayer = plugin.keysOnMap.keyLayers[guid]; + if(previousLayer) { + plugin.keysOnMap.keyLayerGroup.removeLayer(previousLayer); + delete plugin.keysOnMap.keyLayers[guid]; + } +} + +var setup = function() { + $("