int addEdge(int fromIndex, int toIndex, PointList pointList, int flags) { double towerNodeDistance = 0; double prevLat = pointList.latitude(0); double prevLon = pointList.longitude(0); double lat; double lon; PointList pillarNodes = new PointList(pointList.size() - 2); int nodes = pointList.size(); for (int i = 1; i < nodes; i++) { lat = pointList.latitude(i); lon = pointList.longitude(i); towerNodeDistance += callback.calcDist(prevLat, prevLon, lat, lon); prevLat = lat; prevLon = lon; if (nodes > 2 && i < nodes - 1) pillarNodes.add(lat, lon); } if (towerNodeDistance == 0) { // As investigation shows often two paths should have crossed via one identical point // but end up in two very close points. later this will be removed/fixed while // removing short edges where one node is of degree 2 zeroCounter++; towerNodeDistance = 0.0001; } EdgeIterator iter = g.edge(fromIndex, toIndex, towerNodeDistance, flags); if (nodes > 2) iter.wayGeometry(pillarNodes); return nodes; }