Resonators deletion of zoom level move

Change:
Move resonators deletion to 'zoomend' event of map.
Some clean up of code.
This commit is contained in:
Xelio
2013-02-10 22:23:01 +08:00
parent f781c6ebd4
commit 6936ef1d05
2 changed files with 35 additions and 24 deletions

View File

@ -93,7 +93,22 @@ window.setupMap = function() {
map.attributionControl.setPrefix(''); map.attributionControl.setPrefix('');
// listen for changes and store them in cookies // listen for changes and store them in cookies
map.on('moveend', window.storeMapPosition); map.on('moveend', window.storeMapPosition);
map.on('zoomend', window.storeMapPosition); map.on('zoomend', function() {
window.storeMapPosition;
// remove all resonators if zoom out to < RESONATOR_DISPLAY_ZOOM_LEVEL
if (isResonatorsShow()) return;
for(var i = 1; i < portalsLayers.length; i++) {
portalsLayers[i].eachLayer(function(item) {
var itemGuid = item.options.guid;
// check if 'item' is a resonator
if(!window.resonators[itemGuid]) return;
portalsLayers[i].removeLayer(item);
});
}
console.log('Remove all resonators');
});
$("[name='leaflet-base-layers']").change(function () { $("[name='leaflet-base-layers']").change(function () {
writeCookie('ingress.intelmap.type', $(this).parent().index()); writeCookie('ingress.intelmap.type', $(this).parent().index());
}); });

View File

@ -144,27 +144,15 @@ window.cleanUp = function() {
for(var i = 0; i < portalsLayers.length; i++) { for(var i = 0; i < portalsLayers.length; i++) {
// i is also the portal level // i is also the portal level
portalsLayers[i].eachLayer(function(item) { portalsLayers[i].eachLayer(function(item) {
var itemGuid = item.options.guid;
// check if 'item' is a portal
if(!window.portals[itemGuid]) return;
// portal must be in bounds and have a high enough level. Also dont // portal must be in bounds and have a high enough level. Also dont
// remove if it is selected. // remove if it is selected.
var itemGuid = item.options.guid; if(itemGuid == window.selectedPortal ||
switch(getTypeByGuid(itemGuid)) { (b.contains(item.getLatLng()) && i >= minlvl)) return;
cnt[0]++;
case TYPE_PORTAL: portalsLayers[i].removeLayer(item);
if(itemGuid == window.selectedPortal ||
(b.contains(item.getLatLng()) && i >= minlvl)) return;
cnt[0]++;
portalsLayers[i].removeLayer(item);
break;
case TYPE_RESONATOR:
// remove all resonators if zoom level become
// lower than RESONATOR_DISPLAY_ZOOM_LEVEL
if (map.getZoom() < RESONATOR_DISPLAY_ZOOM_LEVEL)
for(var j = 0; j <= 7; j++) portalsLayers[j].removeLayer(item);
break;
}
}); });
} }
linksLayer.eachLayer(function(link) { linksLayer.eachLayer(function(link) {
@ -253,10 +241,14 @@ window.renderPortal = function(ent) {
guid: ent[0]}); guid: ent[0]});
p.on('remove', function() { p.on('remove', function() {
// remove attached resonators
var portalGuid = this.options.guid var portalGuid = this.options.guid
for(var i = 0; i <= 7; i++)
removeByGuid(portalResonatorGuid(portalGuid,i)); // remove attached resonators, skip if
// all resonators have already removed by zooming
if (isResonatorsShow()) {
for(var i = 0; i <= 7; i++)
removeByGuid(portalResonatorGuid(portalGuid,i));
}
delete window.portals[portalGuid]; delete window.portals[portalGuid];
}); });
p.on('add', function() { p.on('add', function() {
@ -283,7 +275,7 @@ window.renderResonators = function(ent) {
var portalLevel = getPortalLevel(ent[2]); var portalLevel = getPortalLevel(ent[2]);
if(portalLevel < getMinPortalLevel() && ent[0] != selectedPortal) return; if(portalLevel < getMinPortalLevel() && ent[0] != selectedPortal) return;
if(map.getZoom() < RESONATOR_DISPLAY_ZOOM_LEVEL) return; if(!isResonatorsShow()) return;
for(var i=0; i < ent[2].resonatorArray.resonators.length; i++) { for(var i=0; i < ent[2].resonatorArray.resonators.length; i++) {
var rdata = ent[2].resonatorArray.resonators[i]; var rdata = ent[2].resonatorArray.resonators[i];
@ -331,6 +323,10 @@ window.portalResonatorGuid = function(portalGuid, slot){
return portalGuid.slice(0,32) + '.r' + slot; return portalGuid.slice(0,32) + '.r' + slot;
} }
window.isResonatorsShow = function(){
return map.getZoom() >= RESONATOR_DISPLAY_ZOOM_LEVEL;
}
window.portalResetColor = function(portal) { window.portalResetColor = function(portal) {
portal.setStyle({color: portal.options.fillColor}); portal.setStyle({color: portal.options.fillColor});
} }