Draw coloured transport route on map
This commit is contained in:
parent
5b136fdcdf
commit
729101faf2
10 changed files with 111 additions and 103 deletions
81
OsmAnd/src/net/osmand/plus/TransportStopRoute.java
Normal file
81
OsmAnd/src/net/osmand/plus/TransportStopRoute.java
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
package net.osmand.plus;
|
||||||
|
|
||||||
|
import net.osmand.data.RotatedTileBox;
|
||||||
|
import net.osmand.data.TransportRoute;
|
||||||
|
import net.osmand.data.TransportStop;
|
||||||
|
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TransportStopRoute {
|
||||||
|
public TransportStop refStop;
|
||||||
|
public TransportStopController.TransportStopType type;
|
||||||
|
public String desc;
|
||||||
|
public TransportRoute route;
|
||||||
|
public TransportStop stop;
|
||||||
|
public int distance;
|
||||||
|
public boolean showWholeRoute;
|
||||||
|
|
||||||
|
public String getDescription(OsmandApplication ctx, boolean useDistance) {
|
||||||
|
if (useDistance && distance > 0) {
|
||||||
|
String nm = OsmAndFormatter.getFormattedDistance(distance, ctx);
|
||||||
|
if (refStop != null && !refStop.getName().equals(stop.getName())) {
|
||||||
|
nm = refStop.getName() + ", " + nm;
|
||||||
|
}
|
||||||
|
return desc + " (" + nm + ")";
|
||||||
|
}
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int calculateZoom(int startPosition, RotatedTileBox currentRotatedTileBox) {
|
||||||
|
RotatedTileBox cp = currentRotatedTileBox.copy();
|
||||||
|
boolean notContains = true;
|
||||||
|
while (cp.getZoom() > 12 && notContains) {
|
||||||
|
notContains = false;
|
||||||
|
List<TransportStop> sts = route.getForwardStops();
|
||||||
|
for (int i = startPosition; i < sts.size(); i++) {
|
||||||
|
TransportStop st = sts.get(startPosition);
|
||||||
|
if (!cp.containsLatLon(st.getLocation())) {
|
||||||
|
notContains = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cp.setZoom(cp.getZoom() - 1);
|
||||||
|
}
|
||||||
|
return cp.getZoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColor(boolean nightMode) {
|
||||||
|
int color;
|
||||||
|
switch (type) {
|
||||||
|
case BUS:
|
||||||
|
color = R.color.route_bus_color;
|
||||||
|
break;
|
||||||
|
case SHARE_TAXI:
|
||||||
|
color = R.color.route_share_taxi_color;
|
||||||
|
break;
|
||||||
|
case TROLLEYBUS:
|
||||||
|
color = R.color.route_trolleybus_color;
|
||||||
|
break;
|
||||||
|
case TRAM:
|
||||||
|
color = R.color.route_tram_color;
|
||||||
|
break;
|
||||||
|
case TRAIN:
|
||||||
|
color = nightMode ? R.color.route_train_color_dark : R.color.route_train_color_light;
|
||||||
|
break;
|
||||||
|
case LIGHT_RAIL:
|
||||||
|
color = R.color.route_lightrail_color;
|
||||||
|
break;
|
||||||
|
case FUNICULAR:
|
||||||
|
color = R.color.route_funicular_color;
|
||||||
|
break;
|
||||||
|
case FERRY:
|
||||||
|
color = nightMode ? R.color.route_ferry_color_dark : R.color.route_ferry_color_light;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
color = R.color.nav_track;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
}
|
|
@ -37,7 +37,7 @@ import net.osmand.plus.mapcontextmenu.MenuController.MenuType;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.MapDataMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.MapDataMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
import net.osmand.plus.mapcontextmenu.editors.FavoritePointEditor;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.PointEditor;
|
import net.osmand.plus.mapcontextmenu.editors.PointEditor;
|
||||||
import net.osmand.plus.mapcontextmenu.editors.RtePtEditor;
|
import net.osmand.plus.mapcontextmenu.editors.RtePtEditor;
|
||||||
|
|
|
@ -46,7 +46,7 @@ import net.osmand.plus.download.DownloadIndexesThread.DownloadEvents;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.MenuState;
|
import net.osmand.plus.mapcontextmenu.MenuController.MenuState;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleButtonController;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
import net.osmand.plus.mapcontextmenu.MenuController.TitleProgressController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
||||||
import net.osmand.plus.views.AnimateDraggingMapThread;
|
import net.osmand.plus.views.AnimateDraggingMapThread;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
|
@ -399,7 +399,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
|
||||||
route.getDescription(getMapActivity().getMyApplication(), false));
|
route.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
menu.show(menu.getLatLon(), pd, route);
|
menu.show(menu.getLatLon(), pd, route);
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
stopsLayer.setRoute(route.route);
|
stopsLayer.setRoute(route);
|
||||||
int cz = route.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = route.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.CardsRowBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
|
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask;
|
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||||
import net.osmand.plus.render.RenderingIcons;
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
|
@ -790,7 +790,7 @@ public class MenuBuilder {
|
||||||
r.getDescription(getMapActivity().getMyApplication(), false));
|
r.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
mm.show(latLon, pd, r);
|
mm.show(latLon, pd, r);
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
stopsLayer.setRoute(r.route);
|
stopsLayer.setRoute(r);
|
||||||
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ import net.osmand.plus.mapcontextmenu.controllers.RenderedObjectMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.TargetPointMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportRouteController;
|
import net.osmand.plus.mapcontextmenu.controllers.TransportRouteController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.WptPtMenuController;
|
import net.osmand.plus.mapcontextmenu.controllers.WptPtMenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.other.ShareMenu;
|
import net.osmand.plus.mapcontextmenu.other.ShareMenu;
|
||||||
import net.osmand.plus.mapillary.MapillaryImage;
|
import net.osmand.plus.mapillary.MapillaryImage;
|
||||||
|
|
|
@ -12,7 +12,7 @@ import android.widget.ArrayAdapter;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package net.osmand.plus.mapcontextmenu.controllers;
|
package net.osmand.plus.mapcontextmenu.controllers;
|
||||||
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
|
@ -14,16 +12,14 @@ import net.osmand.osm.PoiType;
|
||||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.OpeningHoursInfo;
|
import net.osmand.plus.mapcontextmenu.OpeningHoursInfo;
|
||||||
import net.osmand.plus.mapcontextmenu.builders.AmenityMenuBuilder;
|
import net.osmand.plus.mapcontextmenu.builders.AmenityMenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.render.RenderingIcons;
|
import net.osmand.plus.render.RenderingIcons;
|
||||||
import net.osmand.plus.resources.TransportIndexRepository;
|
import net.osmand.plus.resources.TransportIndexRepository;
|
||||||
import net.osmand.plus.views.POIMapLayer;
|
import net.osmand.plus.views.POIMapLayer;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
import net.osmand.util.MapUtils;
|
import net.osmand.util.MapUtils;
|
||||||
import net.osmand.util.OpeningHoursParser;
|
import net.osmand.util.OpeningHoursParser;
|
||||||
|
|
|
@ -12,7 +12,7 @@ import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuController;
|
import net.osmand.plus.mapcontextmenu.MenuController;
|
||||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController.TransportStopRoute;
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.views.TransportStopsLayer;
|
import net.osmand.plus.views.TransportStopsLayer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -202,7 +202,7 @@ public class TransportRouteController extends MenuController {
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
int cz = transportRoute.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = transportRoute.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
stopsLayer.setRoute(transportRoute.route);
|
stopsLayer.setRoute(transportRoute);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetRoute() {
|
private void resetRoute() {
|
||||||
|
|
|
@ -6,12 +6,10 @@ import android.view.View.OnClickListener;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.data.PointDescription;
|
import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadRect;
|
import net.osmand.data.QuadRect;
|
||||||
import net.osmand.data.RotatedTileBox;
|
|
||||||
import net.osmand.data.TransportRoute;
|
import net.osmand.data.TransportRoute;
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
|
||||||
import net.osmand.plus.OsmandApplication;
|
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
import net.osmand.plus.mapcontextmenu.MapContextMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||||
|
@ -137,7 +135,7 @@ public class TransportStopController extends MenuController {
|
||||||
r.getDescription(getMapActivity().getMyApplication(), false));
|
r.getDescription(getMapActivity().getMyApplication(), false));
|
||||||
mm.show(latLon, pd, r);
|
mm.show(latLon, pd, r);
|
||||||
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
TransportStopsLayer stopsLayer = getMapActivity().getMapLayers().getTransportStopsLayer();
|
||||||
stopsLayer.setRoute(r.route);
|
stopsLayer.setRoute(r);
|
||||||
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
int cz = r.calculateZoom(0, getMapActivity().getMapView().getCurrentRotatedTileBox());
|
||||||
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
getMapActivity().changeZoom(cz - getMapActivity().getMapView().getZoom());
|
||||||
}
|
}
|
||||||
|
@ -227,76 +225,4 @@ public class TransportStopController extends MenuController {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TransportStopRoute {
|
|
||||||
public TransportStop refStop;
|
|
||||||
public TransportStopType type;
|
|
||||||
public String desc;
|
|
||||||
public TransportRoute route;
|
|
||||||
public TransportStop stop;
|
|
||||||
public int distance;
|
|
||||||
public boolean showWholeRoute;
|
|
||||||
|
|
||||||
public String getDescription(OsmandApplication ctx, boolean useDistance) {
|
|
||||||
if (useDistance && distance > 0) {
|
|
||||||
String nm = OsmAndFormatter.getFormattedDistance(distance, ctx);
|
|
||||||
if (refStop != null && !refStop.getName().equals(stop.getName())) {
|
|
||||||
nm = refStop.getName() + ", " + nm;
|
|
||||||
}
|
|
||||||
return desc + " (" + nm + ")";
|
|
||||||
}
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int calculateZoom(int startPosition, RotatedTileBox currentRotatedTileBox) {
|
|
||||||
RotatedTileBox cp = currentRotatedTileBox.copy();
|
|
||||||
boolean notContains = true;
|
|
||||||
while (cp.getZoom() > 12 && notContains) {
|
|
||||||
notContains = false;
|
|
||||||
List<TransportStop> sts = route.getForwardStops();
|
|
||||||
for(int i = startPosition; i < sts.size(); i++) {
|
|
||||||
TransportStop st = sts.get(startPosition);
|
|
||||||
if (!cp.containsLatLon(st.getLocation())) {
|
|
||||||
notContains = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cp.setZoom(cp.getZoom() - 1);
|
|
||||||
}
|
|
||||||
return cp.getZoom();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getColor(boolean nightMode) {
|
|
||||||
int color;
|
|
||||||
switch (type) {
|
|
||||||
case BUS:
|
|
||||||
color = R.color.route_bus_color;
|
|
||||||
break;
|
|
||||||
case SHARE_TAXI:
|
|
||||||
color = R.color.route_share_taxi_color;
|
|
||||||
break;
|
|
||||||
case TROLLEYBUS:
|
|
||||||
color = R.color.route_trolleybus_color;
|
|
||||||
break;
|
|
||||||
case TRAM:
|
|
||||||
color = R.color.route_tram_color;
|
|
||||||
break;
|
|
||||||
case TRAIN:
|
|
||||||
color = nightMode ? R.color.route_train_color_dark : R.color.route_train_color_light;
|
|
||||||
break;
|
|
||||||
case LIGHT_RAIL:
|
|
||||||
color = R.color.route_lightrail_color;
|
|
||||||
break;
|
|
||||||
case FUNICULAR:
|
|
||||||
color = R.color.route_funicular_color;
|
|
||||||
break;
|
|
||||||
case FERRY:
|
|
||||||
color = nightMode ? R.color.route_ferry_color_dark : R.color.route_ferry_color_light;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
color = R.color.nav_track;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.graphics.Canvas;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
import android.graphics.Path;
|
import android.graphics.Path;
|
||||||
import android.graphics.PointF;
|
import android.graphics.PointF;
|
||||||
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
@ -16,11 +17,11 @@ import net.osmand.data.PointDescription;
|
||||||
import net.osmand.data.QuadRect;
|
import net.osmand.data.QuadRect;
|
||||||
import net.osmand.data.QuadTree;
|
import net.osmand.data.QuadTree;
|
||||||
import net.osmand.data.RotatedTileBox;
|
import net.osmand.data.RotatedTileBox;
|
||||||
import net.osmand.data.TransportRoute;
|
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
import net.osmand.osm.edit.Node;
|
import net.osmand.osm.edit.Node;
|
||||||
import net.osmand.osm.edit.Way;
|
import net.osmand.osm.edit.Way;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.TransportStopRoute;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -38,13 +39,14 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
private final MapActivity mapActivity;
|
private final MapActivity mapActivity;
|
||||||
private OsmandMapTileView view;
|
private OsmandMapTileView view;
|
||||||
|
|
||||||
|
private int cachedColor;
|
||||||
private Paint paintIcon;
|
private Paint paintIcon;
|
||||||
private Bitmap stopBus;
|
private Bitmap stopBus;
|
||||||
private Bitmap stopSmall;
|
private Bitmap stopSmall;
|
||||||
private RenderingLineAttributes attrs;
|
private RenderingLineAttributes attrs;
|
||||||
|
|
||||||
private MapLayerData<List<TransportStop>> data;
|
private MapLayerData<List<TransportStop>> data;
|
||||||
private TransportRoute route = null;
|
private TransportStopRoute stopRoute = null;
|
||||||
|
|
||||||
private boolean showTransportStops;
|
private boolean showTransportStops;
|
||||||
private Path path;
|
private Path path;
|
||||||
|
@ -67,7 +69,6 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
||||||
attrs = new RenderingLineAttributes("transport_route");
|
attrs = new RenderingLineAttributes("transport_route");
|
||||||
attrs.defaultWidth = (int) (12 * view.getDensity());
|
attrs.defaultWidth = (int) (12 * view.getDensity());
|
||||||
attrs.defaultColor = view.getResources().getColor(R.color.transport_route_line);
|
|
||||||
data = new OsmandMapLayer.MapLayerData<List<TransportStop>>() {
|
data = new OsmandMapLayer.MapLayerData<List<TransportStop>>() {
|
||||||
{
|
{
|
||||||
ZOOM_THRESHOLD = 0;
|
ZOOM_THRESHOLD = 0;
|
||||||
|
@ -143,12 +144,12 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TransportRoute getRoute() {
|
public TransportStopRoute getRoute() {
|
||||||
return route;
|
return stopRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoute(TransportRoute route) {
|
public void setRoute(TransportStopRoute route) {
|
||||||
this.route = route;
|
this.stopRoute = route;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isShowTransportStops() {
|
public boolean isShowTransportStops() {
|
||||||
|
@ -175,18 +176,22 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
}
|
}
|
||||||
return (int) (r * tb.getDensity());
|
return (int) (r * tb.getDensity());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tb, DrawSettings settings) {
|
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tb, DrawSettings settings) {
|
||||||
List<TransportStop> objects = null;
|
List<TransportStop> objects = null;
|
||||||
if (tb.getZoom() >= startZoomRoute) {
|
if (tb.getZoom() >= startZoomRoute) {
|
||||||
if (route != null) {
|
if (stopRoute != null) {
|
||||||
objects = route.getForwardStops();
|
objects = stopRoute.route.getForwardStops();
|
||||||
|
int color = stopRoute.getColor(settings.isNightMode());
|
||||||
|
if (cachedColor != color) {
|
||||||
|
cachedColor = color;
|
||||||
|
attrs.paint.setColor(ContextCompat.getColor(mapActivity, cachedColor));
|
||||||
|
}
|
||||||
attrs.updatePaints(view, settings, tb);
|
attrs.updatePaints(view, settings, tb);
|
||||||
try {
|
try {
|
||||||
path.reset();
|
path.reset();
|
||||||
List<Way> ws = route.getForwardWays();
|
List<Way> ws = stopRoute.route.getForwardWays();
|
||||||
if (ws != null) {
|
if (ws != null) {
|
||||||
for (Way w : ws) {
|
for (Way w : ws) {
|
||||||
TIntArrayList tx = new TIntArrayList();
|
TIntArrayList tx = new TIntArrayList();
|
||||||
|
@ -286,8 +291,8 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List<Object> res, boolean unknownLocation) {
|
public void collectObjectsFromPoint(PointF point, RotatedTileBox tileBox, List<Object> res, boolean unknownLocation) {
|
||||||
if(tileBox.getZoom() >= startZoomRoute && route != null) {
|
if(tileBox.getZoom() >= startZoomRoute && stopRoute != null) {
|
||||||
getFromPoint(tileBox, point, res, route.getForwardStops());
|
getFromPoint(tileBox, point, res, stopRoute.route.getForwardStops());
|
||||||
} else if (tileBox.getZoom() >= startZoom && data.getResults() != null) {
|
} else if (tileBox.getZoom() >= startZoom && data.getResults() != null) {
|
||||||
getFromPoint(tileBox, point, res, data.getResults());
|
getFromPoint(tileBox, point, res, data.getResults());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue