Skip to content

Commit 7028063

Browse files
author
richard
committed
permit GPS tracks to be cleared from the usual menu. Fixes #3492
git-svn-id: http://svn.openstreetmap.org/applications/editors/potlatch2@25544 b9d5c4c9-76e1-0310-9c85-f3177eceb1e4
1 parent 530aa0a commit 7028063

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

net/systemeD/halcyon/Map.as

+14
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,20 @@ package net.systemeD.halcyon {
386386
vectorlayers[layer.name]=layer;
387387
vectorbg.addChild(layer.paint);
388388
}
389+
390+
public function removeVectorLayer(layer:VectorLayer):void {
391+
if (!layer) return;
392+
layer.blank();
393+
vectorbg.removeChild(layer.paint);
394+
delete vectorlayers[layer.name];
395+
}
396+
397+
public function findVectorLayer(name:String):VectorLayer {
398+
for each (var layer:VectorLayer in vectorlayers) {
399+
if (layer.name==name) { return layer; }
400+
}
401+
return null;
402+
}
389403

390404
// ------------------------------------------------------------------------------------------
391405
// Redraw all items, zoom in and out

net/systemeD/potlatch2/VectorSourceDialog.mxml

+1-3
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,7 @@
130130
}
131131
132132
private function removeVectorLayer():void {
133-
var a:String=dataGrid.selectedItem.name;
134-
map.vectorlayers[a].blank();
135-
delete map.vectorlayers[a];
133+
map.removeVectorLayer(map.vectorlayers[dataGrid.selectedItem.name]);
136134
dispatchEvent(new Event("layers_changed"));
137135
}
138136

net/systemeD/potlatch2/utils/TrackLoader.as

+5-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ package net.systemeD.potlatch2.utils {
1717
private var top:Number=0;
1818
private var bottom:Number=0;
1919
private var page:uint=0;
20-
private var _layer:VectorLayer;
2120

2221
private var map:Map;
2322
private var apiBaseURL:String;
@@ -75,14 +74,13 @@ package net.systemeD.potlatch2.utils {
7574
layer.paint.updateEntityUIs(layer.getObjectsByBbox(left,right,top,bottom), false, false);
7675
}
7776

78-
7977
private function get layer():VectorLayer {
80-
if (!_layer) {
81-
var n:String='GPS tracks';
82-
_layer=new VectorLayer(n,map,STYLESHEET);
83-
map.addVectorLayer(_layer);
78+
var vl:VectorLayer=map.findVectorLayer('GPS tracks');
79+
if (!vl) {
80+
vl=new VectorLayer('GPS tracks',map,STYLESHEET);
81+
map.addVectorLayer(vl);
8482
}
85-
return _layer;
83+
return vl;
8684
}
8785

8886
private function greatCircle(lat1:Number,lon1:Number,lat2:Number,lon2:Number):Number {

potlatch2.mxml

+6-1
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,16 @@
3434
<mx:PopUpButton id="styleButton" label="Map Style" openAlways="true" styleName="appBarButton"
3535
creationComplete="styleButton.popUp = new StyleSelector();"/>
3636
<mx:PopUpMenuButton id="gpsButton" styleName="appBarButton"
37-
itemClick="if (event.index==0) { trackLoader.load(); } else { new MyGpxDialog().init(); }">
37+
itemClick="if (event.index==0) { trackLoader.load(); }
38+
else if (event.index==1) { new MyGpxDialog().init(); }
39+
else { mx.controls.Menu(gpsButton.popUp).selectedIndex=0;
40+
mx.controls.Menu(gpsButton.popUp).selectedIndex=0; /* Yes, we do need to call it twice */
41+
theMap.removeVectorLayer(theMap.findVectorLayer('GPS tracks')); }">
3842
<mx:dataProvider>
3943
<mx:Array>
4044
<mx:Object label="GPS data" id="gpsData" />
4145
<mx:Object label="My tracks" id="myTracks" />
46+
<mx:Object label="Clear" id="gpsClear" />
4247
</mx:Array>
4348
</mx:dataProvider>
4449
</mx:PopUpMenuButton>

0 commit comments

Comments
 (0)