diff --git a/vtm/src/org/oscim/map/Layers.java b/vtm/src/org/oscim/map/Layers.java index 490be69c5..dc77650f4 100644 --- a/vtm/src/org/oscim/map/Layers.java +++ b/vtm/src/org/oscim/map/Layers.java @@ -69,6 +69,10 @@ public synchronized Layer get(int index) { return mLayerList.get(index); } + public synchronized List getGroups() { + return mGroupList; + } + @Override public synchronized int size() { return mLayerList.size(); @@ -76,8 +80,10 @@ public synchronized int size() { @Override public synchronized void add(int index, Layer layer) { - if (mLayerList.contains(layer)) - throw new IllegalArgumentException("layer added twice"); + if (mLayerList.contains(layer)) { + log.warn("layer already exists"); + return; + } // bind added layer if (layer instanceof UpdateListener) @@ -110,11 +116,15 @@ public synchronized void add(int index, Layer layer) { * Add using layer groups. */ public synchronized void add(Layer layer, int group) { + if (mLayerList.contains(layer)) { + log.warn("layer already exists"); + return; + } int index = mGroupList.indexOf(group); - if (index < 0) - throw new IllegalArgumentException("unknown layer group"); - if (mLayerList.contains(layer)) - throw new IllegalArgumentException("layer added twice"); + if (index < 0) { + log.warn("unknown / adding layer group" + group); + addGroup(group); + } index++; if (index == mGroupList.size()) @@ -169,8 +179,10 @@ public synchronized Layer remove(int index) { @Override public synchronized Layer set(int index, Layer layer) { - if (mLayerList.contains(layer)) - throw new IllegalArgumentException("layer added twice"); + if (mLayerList.contains(layer)) { + log.warn("layer already exists"); + return layer; + } mDirtyLayers = true; Layer remove = mLayerList.set(index, layer); @@ -202,8 +214,10 @@ public synchronized Layer set(int index, Layer layer) { } public synchronized void addGroup(int group) { - if (mGroupList.contains(group)) - throw new IllegalArgumentException("group added twice"); + if (mGroupList.contains(group)) { + log.warn("group " + group + " already exists"); + return; + } mGroupList.add(group); mGroupIndex.put(group, mLayerList.size());