diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java b/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java index 736caa4..cbcb67c 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java @@ -67,7 +67,7 @@ public class BRouterWorker } readNogos( params ); // add interface provided nogos - rc.prepareNogoPoints( nogoList ); + RoutingContext.prepareNogoPoints( nogoList ); rc.nogopoints = nogoList; waypoints = readPositions(params); diff --git a/brouter-server/src/main/java/btools/server/request/ServerHandler.java b/brouter-server/src/main/java/btools/server/request/ServerHandler.java index 8388411..a0d1f4d 100644 --- a/brouter-server/src/main/java/btools/server/request/ServerHandler.java +++ b/brouter-server/src/main/java/btools/server/request/ServerHandler.java @@ -1,6 +1,7 @@ package btools.server.request; import btools.router.OsmNodeNamed; +import btools.router.OsmNogoPolygon; import btools.router.OsmTrack; import btools.router.RoutingContext; import btools.server.ServiceContext; @@ -57,10 +58,16 @@ public class ServerHandler extends RequestHandler { List nogoList = readNogoList(); if ( nogoList != null ) { - rc.prepareNogoPoints( nogoList ); + RoutingContext.prepareNogoPoints( nogoList ); rc.nogopoints = nogoList; } + List nogoPolygonsList = readNogoPolygons(); + if ( nogoPolygonsList != null ) + { + rc.nogopoints.addAll(nogoPolygonsList); + } + return rc; } @@ -224,5 +231,31 @@ public class ServerHandler extends RequestHandler { n.ilat = (int)( ( lat + 90. ) *1000000. + 0.5); n.isNogo = true; return n; - } + } + + private List readNogoPolygons() + { + String polygons = params.get( "polygons" ); + if ( polygons == null ) return null; + + String[] polygonList = polygons.split("\\|"); + + List nogoPolygonList = new ArrayList(); + for (int i = 0; i < polygonList.length; i++) + { + String[] lonLatList = polygonList[i].split(","); + OsmNogoPolygon polygon = new OsmNogoPolygon(); + for (int j = 0; j < lonLatList.length; j++) + { + String slon = lonLatList[i++]; + String slat = lonLatList[i]; + int lon = (int)( ( Double.parseDouble(slon) + 180. ) *1000000. + 0.5); + int lat = (int)( ( Double.parseDouble(slat) + 90. ) *1000000. + 0.5); + polygon.addVertex(lon, lat); + } + polygon.calcBoundingCircle(); + nogoPolygonList.add(polygon); + } + return nogoPolygonList; + } }