Interface LocationIndex

All Known Implementing Classes:
LocationIndexTree

public interface LocationIndex
Provides a way to map real world data "lat,lon" to internal ids/indices of a memory efficient graph - often just implemented as an array.

The implementations of findID needs to be thread safe!

Author:
Peter Karich
  • Method Details

    • findClosest

      Snap findClosest(double lat, double lon, EdgeFilter edgeFilter)
      This method returns the closest Snap for the specified location (lat, lon) and only if the filter accepts the edge as valid candidate (e.g. filtering away car-only results for bike search)

      Parameters:
      edgeFilter - if a graph supports multiple vehicles we have to make sure that the entry node into the graph is accessible from a selected vehicle. E.g. if you have a FOOT-query do:
      AccessFilter.allEdges(footFlagEncoder);
      Returns:
      An object containing the closest node and edge for the specified location. The node id has at least one edge which is accepted by the specified edgeFilter. If nothing is found the method Snap.isValid will return false.
    • query

      default void query(BBox queryBBox, LocationIndex.Visitor function)
      This method explores the LocationIndex with the specified Visitor. It visits only the stored edges (and only once) and limited by the queryBBox. Also (a few) more edges slightly outside of queryBBox could be returned that you can avoid via doing an explicit BBox check of the coordinates.
    • query

      void query(LocationIndex.TileFilter tileFilter, LocationIndex.Visitor function)
    • close

      void close()
    • createBBoxTileFilter

      static LocationIndex.TileFilter createBBoxTileFilter(BBox queryBBox)