changed way of drawing using RenderingIcons
This commit is contained in:
parent
1dfc515c94
commit
b1770c7a5f
2 changed files with 58 additions and 24 deletions
|
@ -3,26 +3,30 @@ package net.osmand.plus.transport;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
|
||||||
public enum TransportStopType {
|
public enum TransportStopType {
|
||||||
BUS(R.drawable.mx_route_bus_ref, R.drawable.mx_route_bus_ref, "routeBusColor"),
|
BUS(R.drawable.mx_route_bus_ref, R.drawable.mx_route_bus_ref, R.drawable.mm_route_bus_ref, "routeBusColor","route_bus_ref"),
|
||||||
FERRY(R.drawable.mx_route_ferry_ref, R.drawable.mx_route_ferry_ref, "routeFerryColor"),
|
FERRY(R.drawable.mx_route_ferry_ref, R.drawable.mx_route_ferry_ref, R.drawable.mm_route_ferry_ref, "routeFerryColor","route_ferry_ref"),
|
||||||
FUNICULAR(R.drawable.mx_route_funicular_ref, R.drawable.mx_route_funicular_ref, "routeFunicularColor"),
|
FUNICULAR(R.drawable.mx_route_funicular_ref, R.drawable.mx_route_funicular_ref, R.drawable.mm_route_funicular_ref, "routeFunicularColor","route_funicular_ref"),
|
||||||
LIGHT_RAIL(R.drawable.mx_route_light_rail_ref, R.drawable.mx_route_light_rail_ref, "routeLightrailColor"),
|
LIGHT_RAIL(R.drawable.mx_route_light_rail_ref, R.drawable.mx_route_light_rail_ref, R.drawable.mm_route_light_rail_ref, "routeLightrailColor","route_light_rail_ref"),
|
||||||
MONORAIL(R.drawable.mx_route_monorail_ref, R.drawable.mx_route_monorail_ref, "routeLightrailColor"),
|
MONORAIL(R.drawable.mx_route_monorail_ref, R.drawable.mx_route_monorail_ref, R.drawable.mm_route_monorail_ref, "routeLightrailColor","route_monorail_ref"),
|
||||||
RAILWAY(R.drawable.mx_route_railway_ref, R.drawable.mx_route_railway_ref, "routeTrainColor"),
|
RAILWAY(R.drawable.mx_route_railway_ref, R.drawable.mx_route_railway_ref, R.drawable.mm_route_railway_ref, "routeTrainColor","route_railway_ref"),
|
||||||
SHARE_TAXI(R.drawable.mx_route_share_taxi_ref, R.drawable.mx_route_share_taxi_ref, "routeShareTaxiColor"),
|
SHARE_TAXI(R.drawable.mx_route_share_taxi_ref, R.drawable.mx_route_share_taxi_ref, R.drawable.mm_route_share_taxi_ref, "routeShareTaxiColor","route_share_taxi_ref"),
|
||||||
TRAIN(R.drawable.mx_route_train_ref, R.drawable.mx_route_train_ref, "routeTrainColor"),
|
TRAIN(R.drawable.mx_route_train_ref, R.drawable.mx_route_train_ref, R.drawable.mm_route_train_ref, "routeTrainColor","route_train_ref"),
|
||||||
TRAM(R.drawable.mx_route_tram_ref, R.drawable.mx_railway_tram_stop, "routeTramColor"),
|
TRAM(R.drawable.mx_route_tram_ref, R.drawable.mx_railway_tram_stop, R.drawable.mx_route_tram_ref, "routeTramColor","route_tram_ref"),
|
||||||
TROLLEYBUS(R.drawable.mx_route_trolleybus_ref, R.drawable.mx_route_trolleybus_ref, "routeTrolleybusColor"),
|
TROLLEYBUS(R.drawable.mx_route_trolleybus_ref, R.drawable.mx_route_trolleybus_ref, R.drawable.mm_route_trolleybus_ref, "routeTrolleybusColor","route_trolleybus_ref"),
|
||||||
SUBWAY(R.drawable.mx_subway_station, R.drawable.mx_subway_station, "routeTrainColor");
|
SUBWAY(R.drawable.mx_subway_station, R.drawable.mx_subway_station, R.drawable.mm_subway_station, "routeTrainColor","subway_station");
|
||||||
|
|
||||||
final int resId;
|
final int resId;
|
||||||
final int topResId;
|
final int topResId;
|
||||||
|
final int smallResId;
|
||||||
final String renderAttr;
|
final String renderAttr;
|
||||||
|
final String nameDrawable;
|
||||||
|
|
||||||
TransportStopType(int resId, int topResId, String renderAttr) {
|
TransportStopType(int resId, int topResId, int smallResId, String renderAttr, String nameDrawable) {
|
||||||
this.resId = resId;
|
this.resId = resId;
|
||||||
this.topResId = topResId;
|
this.topResId = topResId;
|
||||||
this.renderAttr = renderAttr;
|
this.renderAttr = renderAttr;
|
||||||
|
this.smallResId = smallResId;
|
||||||
|
this.nameDrawable = nameDrawable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getResourceId() {
|
public int getResourceId() {
|
||||||
|
@ -33,6 +37,14 @@ public enum TransportStopType {
|
||||||
return topResId;
|
return topResId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getSmallResId() {
|
||||||
|
return smallResId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameDrawable() {
|
||||||
|
return nameDrawable;
|
||||||
|
}
|
||||||
|
|
||||||
public String getRendeAttr() {
|
public String getRendeAttr() {
|
||||||
return renderAttr;
|
return renderAttr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,9 @@ 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.graphics.PorterDuff;
|
||||||
|
import android.graphics.PorterDuffColorFilter;
|
||||||
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
@ -20,8 +23,10 @@ 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.render.RenderingIcons;
|
||||||
import net.osmand.plus.transport.TransportStopRoute;
|
import net.osmand.plus.transport.TransportStopRoute;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
|
import net.osmand.plus.transport.TransportStopType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -39,6 +44,8 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
private OsmandMapTileView view;
|
private OsmandMapTileView view;
|
||||||
|
|
||||||
private Paint paintIcon;
|
private Paint paintIcon;
|
||||||
|
private Paint paintWhiteIcon;
|
||||||
|
private Bitmap backgroundIcon;
|
||||||
private Bitmap stopBus;
|
private Bitmap stopBus;
|
||||||
private Bitmap stopSmall;
|
private Bitmap stopSmall;
|
||||||
private RenderingLineAttributes attrs;
|
private RenderingLineAttributes attrs;
|
||||||
|
@ -48,6 +55,8 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
|
|
||||||
private boolean showTransportStops;
|
private boolean showTransportStops;
|
||||||
private Path path;
|
private Path path;
|
||||||
|
private float backgroundIconHalfWidth;
|
||||||
|
private float backgroundIconHalfHeight;
|
||||||
|
|
||||||
public TransportStopsLayer(MapActivity mapActivity) {
|
public TransportStopsLayer(MapActivity mapActivity) {
|
||||||
this.mapActivity = mapActivity;
|
this.mapActivity = mapActivity;
|
||||||
|
@ -56,12 +65,16 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public void initLayer(final OsmandMapTileView view) {
|
public void initLayer(final OsmandMapTileView view) {
|
||||||
|
backgroundIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_bg);
|
||||||
|
backgroundIconHalfWidth = backgroundIcon.getWidth() / 2;
|
||||||
|
backgroundIconHalfHeight = backgroundIcon.getWidth() / 2;
|
||||||
this.view = view;
|
this.view = view;
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
DisplayMetrics dm = new DisplayMetrics();
|
||||||
WindowManager wmgr = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
|
WindowManager wmgr = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||||
wmgr.getDefaultDisplay().getMetrics(dm);
|
wmgr.getDefaultDisplay().getMetrics(dm);
|
||||||
|
|
||||||
paintIcon = new Paint();
|
paintIcon = new Paint();
|
||||||
|
paintWhiteIcon = new Paint();
|
||||||
|
paintWhiteIcon.setColorFilter(new PorterDuffColorFilter(ContextCompat.getColor(mapActivity,R.color.primary_text_dark), PorterDuff.Mode.SRC_IN));
|
||||||
path = new Path();
|
path = new Path();
|
||||||
stopBus = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_bus);
|
stopBus = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_bus);
|
||||||
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
stopSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_transport_stop_small);
|
||||||
|
@ -114,7 +127,7 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getFromPoint(RotatedTileBox tb, PointF point, List<? super TransportStop> res,
|
public void getFromPoint(RotatedTileBox tb, PointF point, List<? super TransportStop> res,
|
||||||
List<TransportStop> objects) {
|
List<TransportStop> objects) {
|
||||||
int ex = (int) point.x;
|
int ex = (int) point.x;
|
||||||
int ey = (int) point.y;
|
int ey = (int) point.y;
|
||||||
final int rp = getRadiusPoi(tb);
|
final int rp = getRadiusPoi(tb);
|
||||||
|
@ -227,14 +240,23 @@ public class TransportStopsLayer extends OsmandMapLayer implements ContextMenuLa
|
||||||
fullObjects.add(o);
|
fullObjects.add(o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (TransportStop o : fullObjects) {
|
for (TransportStop o : fullObjects) {
|
||||||
float x = tb.getPixXFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
float x = tb.getPixXFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
||||||
float y = tb.getPixYFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
float y = tb.getPixYFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
||||||
Bitmap b = stopBus;
|
if (stopRoute != null) {
|
||||||
canvas.drawBitmap(b, x - b.getWidth() / 2, y - b.getHeight() / 2, paintIcon);
|
TransportStopType type = TransportStopType.findType(stopRoute.route.getType());
|
||||||
|
if (type != null) {
|
||||||
|
Bitmap foregroundIcon = RenderingIcons.getIcon(mapActivity, type.getNameDrawable(), false);
|
||||||
|
canvas.drawBitmap(backgroundIcon, x - backgroundIconHalfWidth, y - backgroundIconHalfHeight, paintIcon);
|
||||||
|
canvas.drawBitmap(foregroundIcon, x - foregroundIcon.getWidth() / 2, y - foregroundIcon.getHeight() / 2, paintWhiteIcon);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Bitmap b = stopBus;
|
||||||
|
canvas.drawBitmap(b, x - b.getWidth() / 2, y - b.getHeight() / 2, paintIcon);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue