change player tracker to always use a popup
some code changes related to interfacing with clicks and oms, doing things as recommended by the oms code
This commit is contained in:
parent
3ff65225c3
commit
d14d666c54
@ -2,7 +2,7 @@
|
|||||||
// @id iitc-plugin-player-tracker@breunigs
|
// @id iitc-plugin-player-tracker@breunigs
|
||||||
// @name IITC Plugin: Player tracker
|
// @name IITC Plugin: Player tracker
|
||||||
// @category Layer
|
// @category Layer
|
||||||
// @version 0.9.6.@@DATETIMEVERSION@@
|
// @version 0.10.0.@@DATETIMEVERSION@@
|
||||||
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
// @namespace https://github.com/jonatkins/ingress-intel-total-conversion
|
||||||
// @updateURL @@UPDATEURL@@
|
// @updateURL @@UPDATEURL@@
|
||||||
// @downloadURL @@DOWNLOADURL@@
|
// @downloadURL @@DOWNLOADURL@@
|
||||||
@ -62,12 +62,20 @@ window.plugin.playerTracker.setup = function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
plugin.playerTracker.oms = new OverlappingMarkerSpiderfier(map);
|
plugin.playerTracker.oms = new OverlappingMarkerSpiderfier(map, {keepSpiderfied: true, legWeight: 3.5});
|
||||||
plugin.playerTracker.oms.legColors = {'usual': '#FFFF00', 'highlighted': '#FF0000'};
|
plugin.playerTracker.oms.legColors = {'usual': '#FFFF00', 'highlighted': '#FF0000'};
|
||||||
plugin.playerTracker.oms.legWeight = 3.5;
|
|
||||||
|
var playerPopup = new L.Popup({offset: L.point([0,-20])});
|
||||||
plugin.playerTracker.oms.addListener('click', function(player) {
|
plugin.playerTracker.oms.addListener('click', function(player) {
|
||||||
window.renderPortalDetails(player.options.referenceToPortal);
|
window.renderPortalDetails(player.options.referenceToPortal);
|
||||||
|
playerPopup.setContent(player.options.desc);
|
||||||
|
playerPopup.setLatLng(player.getLatLng());
|
||||||
|
map.openPopup(playerPopup)
|
||||||
});
|
});
|
||||||
|
plugin.playerTracker.oms.addListener('spiderfy', function(markers) {
|
||||||
|
map.closePopup();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
addHook('publicChatDataAvailable', window.plugin.playerTracker.handleData);
|
addHook('publicChatDataAvailable', window.plugin.playerTracker.handleData);
|
||||||
|
|
||||||
@ -226,6 +234,7 @@ window.plugin.playerTracker.processNewData = function(data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.playerTracker.getLatLngFromEvent = function(ev) {
|
window.plugin.playerTracker.getLatLngFromEvent = function(ev) {
|
||||||
|
//TODO? add weight to certain events, or otherwise prefer them, to give better locations?
|
||||||
var lats = 0;
|
var lats = 0;
|
||||||
var lngs = 0;
|
var lngs = 0;
|
||||||
$.each(ev.latlngs, function() {
|
$.each(ev.latlngs, function() {
|
||||||
@ -275,13 +284,13 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
polyLineByAgeEnl[ageBucket].push(line);
|
polyLineByAgeEnl[ageBucket].push(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
// tooltip for marker
|
// popup for marker
|
||||||
var evtsLength = playerData.events.length;
|
var evtsLength = playerData.events.length;
|
||||||
var last = playerData.events[evtsLength-1];
|
var last = playerData.events[evtsLength-1];
|
||||||
var ago = plugin.playerTracker.ago;
|
var ago = plugin.playerTracker.ago;
|
||||||
var cssClass = playerData.team === 'RESISTANCE' ? 'res' : 'enl';
|
var cssClass = playerData.team === 'RESISTANCE' ? 'res' : 'enl';
|
||||||
var title = '<span class="nickname '+ cssClass+'" style="font-weight:bold;">' + playerData.nick + '</span>';
|
var title = '<span class="nickname '+ cssClass+'" style="font-weight:bold;">' + playerData.nick + '</span>';
|
||||||
|
|
||||||
if(window.plugin.guessPlayerLevels !== undefined &&
|
if(window.plugin.guessPlayerLevels !== undefined &&
|
||||||
window.plugin.guessPlayerLevels.fetchLevelByPlayer !== undefined) {
|
window.plugin.guessPlayerLevels.fetchLevelByPlayer !== undefined) {
|
||||||
var playerLevel = window.plugin.guessPlayerLevels.fetchLevelByPlayer(pguid);
|
var playerLevel = window.plugin.guessPlayerLevels.fetchLevelByPlayer(pguid);
|
||||||
@ -298,7 +307,7 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
title += '<br>'
|
title += '<br>'
|
||||||
+ ago(last.time, now) + ' ago<br>'
|
+ ago(last.time, now) + ' ago<br>'
|
||||||
+ window.chat.getChatPortalName(last);
|
+ window.chat.getChatPortalName(last);
|
||||||
// show previous data in tooltip
|
// show previous data in popup
|
||||||
var minsAgo = '\t<span style="white-space: nowrap;"> ago</span>\t';
|
var minsAgo = '\t<span style="white-space: nowrap;"> ago</span>\t';
|
||||||
if(evtsLength >= 2)
|
if(evtsLength >= 2)
|
||||||
title += '<br> <br>previous locations:<br>';
|
title += '<br> <br>previous locations:<br>';
|
||||||
@ -329,19 +338,13 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
|
|
||||||
// marker itself
|
// marker itself
|
||||||
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
||||||
var m;
|
// as per OverlappingMarkerSpiderfier docs, click events (popups, etc) must be handled via it rather than the standard
|
||||||
if (typeof android !== 'undefined' && android) {
|
// marker click events. so store the popup text in the options, then display it in the oms click handler
|
||||||
m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity});
|
var m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity, desc: title});
|
||||||
m.bindPopup(title);
|
// m.bindPopup(title);
|
||||||
} else {
|
|
||||||
m = L.marker(gllfe(last), {title: title, icon: icon, referenceToPortal: closestPortal, opacity: absOpacity});
|
|
||||||
// ensure tooltips are closed, sometimes they linger
|
|
||||||
m.on('mouseout', function() { $(this._icon).tooltip('close'); });
|
|
||||||
}
|
|
||||||
m.addTo(playerData.team === 'RESISTANCE' ? plugin.playerTracker.drawnTracesRes : plugin.playerTracker.drawnTracesEnl);
|
m.addTo(playerData.team === 'RESISTANCE' ? plugin.playerTracker.drawnTracesRes : plugin.playerTracker.drawnTracesEnl);
|
||||||
plugin.playerTracker.oms.addMarker(m);
|
plugin.playerTracker.oms.addMarker(m);
|
||||||
// jQueryUI doesn’t automatically notice the new markers
|
|
||||||
window.setupTooltips($(m._icon));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// draw the poly lines to the map
|
// draw the poly lines to the map
|
||||||
@ -378,13 +381,6 @@ window.plugin.playerTracker.handleData = function(data) {
|
|||||||
|
|
||||||
plugin.playerTracker.discardOldData();
|
plugin.playerTracker.discardOldData();
|
||||||
plugin.playerTracker.processNewData(data);
|
plugin.playerTracker.processNewData(data);
|
||||||
// remove old popups
|
|
||||||
plugin.playerTracker.drawnTracesEnl.eachLayer(function(layer) {
|
|
||||||
if(layer._icon) $(layer._icon).tooltip('destroy');
|
|
||||||
});
|
|
||||||
plugin.playerTracker.drawnTracesRes.eachLayer(function(layer) {
|
|
||||||
if(layer._icon) $(layer._icon).tooltip('destroy');
|
|
||||||
});
|
|
||||||
plugin.playerTracker.oms.clearMarkers();
|
plugin.playerTracker.oms.clearMarkers();
|
||||||
plugin.playerTracker.drawnTracesEnl.clearLayers();
|
plugin.playerTracker.drawnTracesEnl.clearLayers();
|
||||||
plugin.playerTracker.drawnTracesRes.clearLayers();
|
plugin.playerTracker.drawnTracesRes.clearLayers();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user