@Override
    public boolean intersects(PointList pointList) {
        // similar code to LocationIndexTree.checkAdjacent
        int len = pointList.size();
        if (len == 0)
            throw new IllegalArgumentException("PointList must not be empty");

        double tmpLat = pointList.getLat(0);
        double tmpLon = pointList.getLon(0);
        if (len == 1)
            return calc.calcNormalizedDist(lat, lon, tmpLat, tmpLon) <= normedDist;

        for (int pointIndex = 1; pointIndex < len; pointIndex++) {
            double wayLat = pointList.getLat(pointIndex);
            double wayLon = pointList.getLon(pointIndex);

            if (calc.validEdgeDistance(lat, lon, tmpLat, tmpLon, wayLat, wayLon)) {
                if (calc.calcNormalizedEdgeDistance(lat, lon, tmpLat, tmpLon, wayLat, wayLon) <= normedDist)
                    return true;
            } else {
                if (calc.calcNormalizedDist(lat, lon, tmpLat, tmpLon) <= normedDist
                        || pointIndex + 1 == len && calc.calcNormalizedDist(lat, lon, wayLat, wayLon) <= normedDist)
                    return true;
            }
            tmpLat = wayLat;
            tmpLon = wayLon;
        }
        return false;
    }
@Test
    public void testIntersectCircleBBox() {
        assertTrue(new Circle(10, 10, 120000).intersects(new BBox(9, 11, 8, 9)));

        assertFalse(new Circle(10, 10, 110000).intersects(new BBox(9, 11, 8, 9)));
    }