use of com.here.android.mpa.common.GeoPolygon in project here-android-sdk-examples by heremaps.
the class MapFragmentView method createPolygon.
/**
* Create a MapPolygon and add the MapPolygon to active map view.
*/
private void createPolygon() {
// create an bounding box centered at current cent
GeoBoundingBox boundingBox = new GeoBoundingBox(m_map.getCenter(), 1000, 1000);
// add boundingbox's four vertices to list of Geocoordinates.
List<GeoCoordinate> coordinates = new ArrayList<GeoCoordinate>();
coordinates.add(boundingBox.getTopLeft());
coordinates.add(new GeoCoordinate(boundingBox.getTopLeft().getLatitude(), boundingBox.getBottomRight().getLongitude(), boundingBox.getTopLeft().getAltitude()));
coordinates.add(boundingBox.getBottomRight());
coordinates.add(new GeoCoordinate(boundingBox.getBottomRight().getLatitude(), boundingBox.getTopLeft().getLongitude(), boundingBox.getTopLeft().getAltitude()));
// create GeoPolygon with list of GeoCoordinates.
GeoPolygon geoPolygon = new GeoPolygon(coordinates);
// create MapPolygon with GeoPolygon.
m_polygon = new MapPolygon(geoPolygon);
// set line color, fill color and line width
m_polygon.setLineColor(Color.RED);
m_polygon.setFillColor(Color.GRAY);
m_polygon.setLineWidth(12);
// add MapPolygon to map.
m_map.addMapObject(m_polygon);
}
use of com.here.android.mpa.common.GeoPolygon in project here-android-sdk-examples by heremaps.
the class MapFragmentView method addPolygonObject.
/**
* Create a MapPolygon and add the MapPolygon to active map view.
*/
private void addPolygonObject() {
// create an bounding box centered at current cent
GeoBoundingBox boundingBox = new GeoBoundingBox(m_map.getCenter(), 1000, 1000);
// add boundingbox's four vertices to list of Geocoordinates.
List<GeoCoordinate> coordinates = new ArrayList<GeoCoordinate>();
coordinates.add(boundingBox.getTopLeft());
coordinates.add(new GeoCoordinate(boundingBox.getTopLeft().getLatitude(), boundingBox.getBottomRight().getLongitude(), boundingBox.getTopLeft().getAltitude()));
coordinates.add(boundingBox.getBottomRight());
coordinates.add(new GeoCoordinate(boundingBox.getBottomRight().getLatitude(), boundingBox.getTopLeft().getLongitude(), boundingBox.getTopLeft().getAltitude()));
// create GeoPolygon with list of GeoCoordinates.
GeoPolygon geoPolygon = new GeoPolygon(coordinates);
// create MapPolygon with GeoPolygon.
MapPolygon polygon = new MapPolygon(geoPolygon);
// set line color, fill color and line width
polygon.setLineColor(Color.RED);
polygon.setFillColor(Color.GRAY);
polygon.setLineWidth(12);
// add MapPolygon to map.
m_map.addMapObject(polygon);
m_polygons.add(polygon);
}
use of com.here.android.mpa.common.GeoPolygon in project here-android-sdk-examples by heremaps.
the class MapFragmentView method createRoute.
private void createRoute(final List<RoutingZone> excludedRoutingZones) {
/* Initialize a CoreRouter */
CoreRouter coreRouter = new CoreRouter();
/* Initialize a RoutePlan */
RoutePlan routePlan = new RoutePlan();
/*
* Initialize a RouteOption. HERE Mobile SDK allow users to define their own parameters for the
* route calculation,including transport modes,route types and route restrictions etc.Please
* refer to API doc for full list of APIs
*/
RouteOptions routeOptions = new RouteOptions();
/* Other transport modes are also available e.g Pedestrian */
routeOptions.setTransportMode(RouteOptions.TransportMode.CAR);
/* Disable highway in this route. */
routeOptions.setHighwaysAllowed(false);
/* Calculate the shortest route available. */
routeOptions.setRouteType(RouteOptions.Type.SHORTEST);
/* Calculate 1 route. */
routeOptions.setRouteCount(1);
/* Exclude routing zones. */
if (!excludedRoutingZones.isEmpty()) {
routeOptions.excludeRoutingZones(toStringIds(excludedRoutingZones));
}
if (m_addAvoidedAreas) {
DynamicPenalty dynamicPenalty = new DynamicPenalty();
// There are two option to avoid certain areas during routing
// 1. Add banned area using addBannedArea API
GeoPolygon geoPolygon = new GeoPolygon();
geoPolygon.add(Arrays.asList(new GeoCoordinate(52.631692, 13.437591), new GeoCoordinate(52.631905, 13.437787), new GeoCoordinate(52.632577, 13.438357)));
// Note, the maximum supported number of banned areas is 20.
dynamicPenalty.addBannedArea(geoPolygon);
// 1. Add banned road link using addRoadPenalty API
// Note, map data needs to be present to get RoadElement by the GeoCoordinate.
RoadElement roadElement = RoadElement.getRoadElement(new GeoCoordinate(52.406611, 13.194916), "MAC");
if (roadElement != null) {
dynamicPenalty.addRoadPenalty(roadElement, DrivingDirection.DIR_BOTH, 0);
}
coreRouter.setDynamicPenalty(dynamicPenalty);
}
/* Finally set the route option */
routePlan.setRouteOptions(routeOptions);
/* Define waypoints for the route */
/* START: South of Berlin */
RouteWaypoint startPoint = new RouteWaypoint(new GeoCoordinate(52.406425, 13.193975));
/* END: North of Berlin */
RouteWaypoint destination = new RouteWaypoint(new GeoCoordinate(52.638623, 13.441998));
/* Add both waypoints to the route plan */
routePlan.addWaypoint(startPoint);
routePlan.addWaypoint(destination);
/* Trigger the route calculation,results will be called back via the listener */
coreRouter.calculateRoute(routePlan, new Router.Listener<List<RouteResult>, RoutingError>() {
@Override
public void onProgress(int i) {
/* The calculation progress can be retrieved in this callback. */
}
@Override
public void onCalculateRouteFinished(List<RouteResult> routeResults, RoutingError routingError) {
/* Calculation is done. Let's handle the result */
if (routingError == RoutingError.NONE) {
Route route = routeResults.get(0).getRoute();
if (m_isExcludeRoutingZones && excludedRoutingZones.isEmpty()) {
// Here we exclude all available routing zones in the route.
// Also RoutingZoneRestrictionsChecker can be used to get
// available routing zones for specific RoadElement.
createRoute(route.getRoutingZones());
} else {
/* Create a MapRoute so that it can be placed on the map */
m_mapRoute = new MapRoute(route);
/* Show the maneuver number on top of the route */
m_mapRoute.setManeuverNumberVisible(true);
/* Add the MapRoute to the map */
m_map.addMapObject(m_mapRoute);
/*
* We may also want to make sure the map view is orientated properly
* so the entire route can be easily seen.
*/
m_map.zoomTo(route.getBoundingBox(), Map.Animation.NONE, Map.MOVE_PRESERVE_ORIENTATION);
}
} else {
Toast.makeText(m_activity, "Error:route calculation returned error code: " + routingError, Toast.LENGTH_LONG).show();
}
}
});
}
Aggregations