@Override public MapElement getReduced(int detail, float range) { // draw everything on detail 0 if (detail == 0) { return this; } // determine bounding box, discard too small areas Bounds bounds = new Bounds(nodes[0].getPos(), 0); for (Node node : nodes) { bounds.extend(node.getLatitude(), node.getLongitude()); } if (bounds.getHeight() + bounds.getWidth() < range) { return null; } // return simplified area Area result = new Area(name, wayInfo); result.setNodes(Street.simplifyNodes(nodes, range / 2)); if (result.nodes.length <= MIN_REDUCTION_NODES && nodes.length > MIN_REDUCTION_NODES) { return null; } return (result.nodes.length == nodes.length) ? this : result; }