Skip to content

Commit

Permalink
Route point markers
Browse files Browse the repository at this point in the history
  • Loading branch information
andreynovikov committed Mar 5, 2024
1 parent bad6271 commit 92c3643
Show file tree
Hide file tree
Showing 14 changed files with 599 additions and 63 deletions.
8 changes: 7 additions & 1 deletion app/src/main/java/mobi/maptrek/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4190,7 +4190,13 @@ private void addSourceToMap(FileDataSource source) {
mTotalDataItems++;
}
for (Route route : source.routes) {
RouteLayer routeLayer = new RouteLayer(mMap, route);
Bitmap bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(this, R.drawable.route_start, route.style.color));
MarkerSymbol startSymbol = new MarkerSymbol(bitmap, MarkerItem.HotspotPlace.CENTER);
bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(this, R.drawable.route_point, route.style.color));
MarkerSymbol pointSymbol = new MarkerSymbol(bitmap, MarkerItem.HotspotPlace.CENTER);
bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(this, R.drawable.route_end, route.style.color));
MarkerSymbol endSymbol = new MarkerSymbol(bitmap, MarkerItem.HotspotPlace.CENTER);
RouteLayer routeLayer = new RouteLayer(mMap, route, pointSymbol, startSymbol, endSymbol);
mMap.layers().add(routeLayer, MAP_DATA);
mTotalDataItems++;
}
Expand Down
7 changes: 4 additions & 3 deletions app/src/main/java/mobi/maptrek/fragments/RouteEdit.java
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,11 @@ public void onAttach(@NonNull Context context) {
public void onStart() {
super.onStart();
Context context = requireContext();
mRouteLayer = new RouteLayer(mMapHolder.getMap(), RouteStyle.DEFAULT_COLOR, 5, viewModel.route);
mMapHolder.getMap().layers().add(mRouteLayer);
Bitmap bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(context, R.drawable.dot_black, RouteStyle.DEFAULT_COLOR));
Bitmap bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(context, R.drawable.route_dot, RouteStyle.DEFAULT_COLOR));
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerItem.HotspotPlace.CENTER);
mRouteLayer = new RouteLayer(mMapHolder.getMap(), viewModel.route, RouteStyle.DEFAULT_COLOR, 5, symbol);
mRouteLayer.enableSymbols(false);
mMapHolder.getMap().layers().add(mRouteLayer);
ArrayList<MarkerItem> items = new ArrayList<>(viewModel.route.size());
for (Route.Instruction instruction : viewModel.route.getInstructions()) {
items.add(new MarkerItem(instruction, instruction.text, null, instruction));
Expand Down
27 changes: 3 additions & 24 deletions app/src/main/java/mobi/maptrek/fragments/Ruler.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,9 @@
import org.oscim.core.GeoPoint;
import org.oscim.core.MapPosition;

import java.util.ArrayList;
import java.util.Stack;

import mobi.maptrek.MapHolder;
import mobi.maptrek.MapTrek;
import mobi.maptrek.R;
import mobi.maptrek.data.Route;
import mobi.maptrek.databinding.FragmentRulerBinding;
Expand All @@ -53,7 +51,6 @@ public class Ruler extends Fragment implements ItemizedLayer.OnItemGestureListen

private MapPosition mMapPosition;
private RouteLayer mRouteLayer;
private ItemizedLayer<MarkerItem> mPointLayer;
private RulerViewModel viewModel;
private FragmentRulerBinding viewBinding;

Expand All @@ -78,8 +75,6 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
if (mMapHolder.getMap().getMapPosition(mMapPosition)) {
GeoPoint point = mMapPosition.getGeoPoint();
viewModel.route.addInstruction(point);
MarkerItem marker = new MarkerItem(point, null, null, point);
mPointLayer.addItem(marker);
viewModel.pointHistory.push(point);
mMapHolder.getMap().updateMap(true);
updateTrackMeasurements();
Expand All @@ -90,8 +85,6 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
if (mMapHolder.getMap().getMapPosition(mMapPosition)) {
GeoPoint point = mMapPosition.getGeoPoint();
viewModel.route.insertInstruction(point);
MarkerItem marker = new MarkerItem(point, null, null, point);
mPointLayer.addItem(marker);
viewModel.pointHistory.push(point);
mMapHolder.getMap().updateMap(true);
updateTrackMeasurements();
Expand All @@ -103,8 +96,6 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
mMapHolder.getMap().getMapPosition(mMapPosition);
Route.Instruction instruction = viewModel.route.getNearestInstruction(mMapPosition.getGeoPoint());
viewModel.route.removeInstruction(instruction);
MarkerItem marker = mPointLayer.getByUid(new GeoPoint(instruction.latitudeE6, instruction.longitudeE6));
mPointLayer.removeItem(marker);
viewModel.pointHistory.remove(instruction);
mMapHolder.getMap().updateMap(true);
mMapPosition = new MapPosition();
Expand All @@ -121,8 +112,6 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
return;
}
viewModel.route.removeInstruction(instruction);
MarkerItem marker = mPointLayer.getByUid(new GeoPoint(instruction.latitudeE6, instruction.longitudeE6));
mPointLayer.removeItem(marker);
mMapHolder.getMap().updateMap(true);
mMapPosition = new MapPosition();
updateTrackMeasurements();
Expand All @@ -144,17 +133,10 @@ public void onAttach(@NonNull Context context) {
public void onStart() {
super.onStart();
Context context = requireContext();
mRouteLayer = new RouteLayer(mMapHolder.getMap(), Color.RED, 5, viewModel.route);
mMapHolder.getMap().layers().add(mRouteLayer);
Bitmap bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(context, R.drawable.dot_black, Color.RED));
Bitmap bitmap = new AndroidBitmap(MarkerFactory.getMarkerSymbol(context, R.drawable.route_dot, Color.RED));
MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerItem.HotspotPlace.CENTER);
ArrayList<MarkerItem> items = new ArrayList<>(viewModel.route.size());
for (GeoPoint point : viewModel.route.getCoordinates()) {
items.add(new MarkerItem(point, null, null, point));
}
int strokeColor = getResources().getColor(R.color.colorBackground, context.getTheme());
mPointLayer = new ItemizedLayer<>(mMapHolder.getMap(), items, symbol, MapTrek.density, strokeColor, this);
mMapHolder.getMap().layers().add(mPointLayer);
mRouteLayer = new RouteLayer(mMapHolder.getMap(), viewModel.route, Color.RED, 5, symbol);
mMapHolder.getMap().layers().add(mRouteLayer);
}

@Override
Expand All @@ -169,9 +151,6 @@ public void onStop() {
mMapHolder.getMap().layers().remove(mRouteLayer);
mRouteLayer.onDetach();
mRouteLayer = null;
mMapHolder.getMap().layers().remove(mPointLayer);
mPointLayer.onDetach();
mPointLayer = null;
mMapHolder.getMap().updateMap(true);
}

Expand Down
Loading

0 comments on commit 92c3643

Please sign in to comment.