@Override
  public void visit(Node n) {
    assert aNode != null;

    if (n.hasKey(tag)) {
      double dist = n.getCoor().greatCircleDistance(aNode.getCoor());
      if (dist < minDist && dist < maxDist) {
        minDist = dist;
        currentValue = n.get(tag);
        srcNode = n;
      }
    }
  }
  @Override
  public void visit(Way w) {
    assert aNode != null;

    if (w.hasKey(tag)) {
      double dist = OsmUtils.getMinimumDistanceToWay(aNode.getCoor(), w);
      if (dist < minDist && dist < maxDist) {
        minDist = dist;
        currentValue = w.get(tag);
        srcNode = w;
      }
    }
  }
 /**
  * Check if we need to visit the OSM data
  *
  * @return true, if successful
  */
 public boolean needsGuess() {
   return aNode.needsGuessedValue(tag);
 }