computeLocation method
Implementation
void computeLocation(Coordinate p, Geometry geom) {
if (geom is Point) {
updateLocationInfo(locateOnPoint(p, geom));
}
if (geom is LineString) {
updateLocationInfo(locateOnLineString(p, geom));
} else if (geom is Polygon) {
updateLocationInfo(locateInPolygon(p, geom));
} else if (geom is MultiLineString) {
MultiLineString ml = geom;
for (int i = 0; i < ml.getNumGeometries(); i++) {
LineString l = ml.getGeometryN(i) as LineString;
updateLocationInfo(locateOnLineString(p, l));
}
} else if (geom is MultiPolygon) {
MultiPolygon mpoly = geom;
for (int i = 0; i < mpoly.getNumGeometries(); i++) {
Polygon poly = mpoly.getGeometryN(i) as Polygon;
updateLocationInfo(locateInPolygon(p, poly));
}
} else if (geom is GeometryCollection) {
GeometryCollectionIterator geomi = new GeometryCollectionIterator(geom);
while (geomi.hasNext()) {
Geometry g2 = geomi.next() as Geometry;
if (g2 != geom) computeLocation(p, g2);
}
}
}