bool SimplePointInAreaLocator::containsPoint(const Coordinate& p,const Geometry *geom) { if (typeid(*geom)==typeid(Polygon)) { return containsPointInPolygon(p,(Polygon*)geom); } else if ((typeid(*geom)==typeid(GeometryCollection)) || (typeid(*geom)==typeid(MultiPoint)) || (typeid(*geom)==typeid(MultiLineString)) || (typeid(*geom)==typeid(MultiPolygon))) { GeometryCollectionIterator geomi((GeometryCollection*)geom); while (geomi.hasNext()) { const Geometry *g2=geomi.next(); if (g2!=geom) if (containsPoint(p,g2)) return true; } } return false; }
bool SimplePointInAreaLocator::containsPoint(const Coordinate& p,const Geometry *geom) { if (const Polygon *poly = dynamic_cast<const Polygon*>(geom)) { return containsPointInPolygon(p, poly); } if (const GeometryCollection *col = dynamic_cast<const GeometryCollection*>(geom)) { for (GeometryCollection::const_iterator it=col->begin(), endIt=col->end(); it != endIt; ++it) { const Geometry *g2=*it; assert (g2!=geom); if (containsPoint(p,g2)) return true; } } return false; }