package aimax.osm.data; import java.util.List; import aimax.osm.data.entities.EntityAttribute; import aimax.osm.data.entities.EntityViewInfo; /** * Simple interface to aggregate map data. Its purpose is, to keep OSM parsers * independent from the concrete structure which is used to store the data. Osm * maps should only be modified by implementations of this map builder * interface. * * @author Ruediger Lunde */ public interface MapBuilder { /** * Provides the builder with an entity classifier. The classifier defines * the scale-dependent visibility of entities and by that strongly * influences the organization of the data. */ public void setEntityClassifier(EntityClassifier<EntityViewInfo> classifier); /** Defines the region in which complete map data is available. */ public void setBoundingBox(BoundingBox bb); /** * Returns true, if a node with the given id has already been added before. * * @param bb * Specifies an optional bounding box. If the value is not null, * it is also checked, whether the node is inside the box. */ public boolean isNodeDefined(long id, BoundingBox bb); /** * Returns true, if a node with the given id is referenced by a way, which * was added before. */ public boolean isNodeReferenced(long id); /** * Adds a new map node (way node as well as point of interest) to the * container. */ public void addNode(long id, String name, List<EntityAttribute> atts, float lat, float lon); /** * Returns true, if a way with the given id has already been added before. */ public boolean isWayDefined(long id); /** * Adds a new map way to the container, adds all referenced way nodes to the * container (without position) if they have not been added before, stores * the list of way nodes with the way, and additionally adds a way reference * to each node. The way nodes define the representation of the way at zoom * level 0. The missing positions of the nodes may be set later on. */ public void addWay(long id, String name, List<EntityAttribute> atts, List<Long> wayNodeIds); /** * Checks whether node references without corresponding node definitions * have been added since the last call. */ public boolean nodeRefsWithoutDefsAdded(); /** * Returns the modified or created map. This method must be called after all * map entities have been added. */ public OsmMap buildMap(); }