Ignore:
Timestamp:
2009-11-09T08:21:13+01:00 (15 years ago)
Author:
jttt
Message:

Reindex node or way in QuadBuckets after coordinates change

Location:
trunk/src/org/openstreetmap/josm/data/osm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r2412 r2419  
    756756     * Reindex all nodes and ways after their coordinates were changed. This is a temporary solution, reindexing should
    757757     * be automatic in the future
    758      */
     758     * @deprecated Reindexing should be automatic
     759     */
     760    @Deprecated
    759761    public void reindexAll() {
    760762        List<Node> ntmp = new ArrayList<Node>(nodes);
     
    764766        ways.clear();
    765767        ways.addAll(wtmp);
     768    }
     769
     770    void reindexNode(Node node) {
     771        nodes.remove(node);
     772        nodes.add(node);
     773        for (Way way:OsmPrimitive.getFilteredList(node.getReferrers(), Way.class)) {
     774            ways.remove(way);
     775            ways.add(way);
     776        }
     777    }
     778
     779    void reindexWay(Way way) {
     780        ways.remove(way);
     781        ways.add(way);
    766782    }
    767783
  • trunk/src/org/openstreetmap/josm/data/osm/Node.java

    r2417 r2419  
    2323                this.coor.setCoor(coor);
    2424            }
     25            if (getDataSet() != null) {
     26                getDataSet().reindexNode(this);
     27            }
    2528        }
    2629    }
     
    3740            } else {
    3841                coor = new CachedLatLon(eastNorth);
     42            }
     43            if (getDataSet() != null) {
     44                getDataSet().reindexNode(this);
    3945            }
    4046        }
  • trunk/src/org/openstreetmap/josm/data/osm/Way.java

    r2417 r2419  
    5959
    6060        clearCached();
     61        reindex();
    6162    }
    6263
     
    287288        newNodes[nodes.length] = n;
    288289        nodes = newNodes;
     290        reindex();
    289291    }
    290292
     
    309311        newNodes[offs] = n;
    310312        nodes = newNodes;
     313        reindex();
    311314    }
    312315
     
    320323            }
    321324        }
     325        reindex();
    322326        super.setDeleted(deleted);
    323327    }
     
    352356        return OsmPrimitiveType.WAY;
    353357    }
     358
     359    private void reindex() {
     360        if (getDataSet() != null) {
     361            getDataSet().reindexWay(this);
     362        }
     363    }
    354364}
Note: See TracChangeset for help on using the changeset viewer.