From 73fc5f9b0b23be17e16698dd9452d7e942129c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Fri, 23 Nov 2018 22:27:59 +0100 Subject: [PATCH] Add default icon for each type of localization --- .../findmytutor/activity/LoginActivity.java | 5 +- .../wmi/findmytutor/activity/MapActivity.java | 102 +++++++++++++----- .../uam/wmi/findmytutor/utils/MapMarker.java | 50 +++++++++ 3 files changed, 128 insertions(+), 29 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/utils/MapMarker.java diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java index 912598a..1f98426 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/LoginActivity.java @@ -153,9 +153,10 @@ public class LoginActivity extends AppCompatActivity { private void loginProcess(String email, String password) { - ValidateUser user = new ValidateUser(email, password); + /*ValidateUser user = new ValidateUser(email, password);*/ + LdapUser user = new LdapUser("Mieszko","asdasdsa","admin","tutor","Mieszko", "WrzeszczyƄski", "email@op.pl"); - disposable.add(ldapService.validate(user) + disposable.add(ldapService.fakeValidate(user) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index 0b6f8b6..14e2e70 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java @@ -41,8 +41,10 @@ import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.service.CoordinateService; import com.uam.wmi.findmytutor.service.UserService; +import com.uam.wmi.findmytutor.utils.MapMarker; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RestApiHelper; +import com.uam.wmi.findmytutor.utils.SharingLevel; import com.uam.wmi.findmytutor.utils.mapUtils; import java.util.ArrayList; @@ -61,8 +63,7 @@ import timber.log.Timber; public class MapActivity extends BaseActivity implements PermissionsListener, OnMapReadyCallback { - - + private String tag = getClass().getName(); private PermissionsManager permissionsManager; private LocationComponent locationComponent; @@ -82,7 +83,7 @@ public class MapActivity extends BaseActivity private Marker tmpLocalMarker; private Coordinate droppedMarkercoordinate; private HashMap coordsMap = new HashMap<>(); - private HashMap markerHash = new HashMap<>(); + private HashMap markerHash = new HashMap<>(); private Set previousCoordsIds = new HashSet<>(); // Camera Animation params @@ -112,9 +113,6 @@ public class MapActivity extends BaseActivity } }; - - Bundle extras = getIntent().getExtras(); - selectLocationButton = findViewById(R.id.select_location_button); removeLocationButton = findViewById(R.id.remove_location_button); Mapbox.getInstance(this, getString(R.string.access_token)); @@ -157,7 +155,6 @@ public class MapActivity extends BaseActivity setToggleMapBoundsArea(); setOnMapLongClickListener(); -// addStaticLayer(); } private void setToggleMapBoundsArea() { @@ -333,7 +330,6 @@ public class MapActivity extends BaseActivity @Override public void onSuccess(List coordsList) { - if (coordsList.isEmpty() && tmpLocalMarker != null) { Timber.e("200 empty []"); mapboxMap.clear(); @@ -346,6 +342,7 @@ public class MapActivity extends BaseActivity } Set currentCoordsIds = new HashSet<>(tmp); + if (previousCoordsIds.isEmpty()) { previousCoordsIds.addAll(currentCoordsIds); } else { @@ -353,7 +350,7 @@ public class MapActivity extends BaseActivity if (previousCoordsIds.removeAll(currentCoordsIds)) { for (String toRemoveId : previousCoordsIds) { Log.e(tag + "delete: ", "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId)); - mapboxMap.removeMarker(markerHash.get(toRemoveId)); + mapboxMap.removeMarker(markerHash.get(toRemoveId).getMarker()); markerHash.remove(toRemoveId); coordsMap.remove(toRemoveId); } @@ -367,6 +364,7 @@ public class MapActivity extends BaseActivity for (Coordinate element : coordsList) { String id = element.getUserId(); String newLabel = element.getLabel(); + String newSharingLevel = element.getDisplayMode(); Coordinate coordinate = coordsMap.get(id); Log.e(tag, "hashMapSize: " + coordsMap.size()); @@ -375,11 +373,13 @@ public class MapActivity extends BaseActivity if (coordinate != null) { Log.e(tag, "Coordin: " + coordinate.getLatitude() + " | " + coordinate.getLongitude()); - boolean statement = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude()); - Log.e(tag, "diff || diff: " + !statement); - if (!statement) { + + boolean isTheSameLocalisation = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude()); + Log.e(tag, "diff || diff: " + !isTheSameLocalisation); + + if (!isTheSameLocalisation) { Log.e(tag, "replace and animate"); - Marker marker = markerHash.get(id); + Marker marker = markerHash.get(id).getMarker(); LatLng toDestination = new LatLng(element.getLatitude(), element.getLongitude()); // TODO fix flickiering markers @@ -398,25 +398,72 @@ public class MapActivity extends BaseActivity marker.setPosition(toDestination); } + + + + } else { Log.e(tag, "Marker Added: " + id); coordsMap.put(id, element); - MarkerOptions markerOptions = new MarkerOptions() - .title(id) - .position(new LatLng(element.getLatitude(), element.getLongitude())); + /* // Check if this is me if (id.equals(myID)) { Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker); markerOptions.setIcon(icon); + } */ + + String sharingLevel = coordsMap.get(id).getDisplayMode(); + Icon defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.red_marker); + + if(sharingLevel.equals(SharingLevel.APPROXIMATED.toString())){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker); + }else if(sharingLevel.equals(SharingLevel.MANUAL.toString())){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.green_marker); + }else if(id.equals(myID)){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker); } - Marker marker = mapboxMap.addMarker(markerOptions); + + MarkerOptions markerOptions = new MarkerOptions() + .title(id) + .setIcon(defaultIcon) + .position(new LatLng(element.getLatitude(), element.getLongitude())); + + Marker markerMapbox = mapboxMap.addMarker(markerOptions); + MapMarker marker = new MapMarker(markerMapbox, markerOptions, defaultIcon, sharingLevel); markerHash.put(id, marker); } coordsMap.get(id).setLabel(newLabel); + + + boolean newLocalizationMode = coordsMap.get(id).getDisplayMode().equals(newSharingLevel); + + if(newLocalizationMode){ + Log.e("LOC","Nowy tryb" + coordsMap.get(id).getDisplayMode().toString() + " " + newSharingLevel ); + coordsMap.get(id).setDisplayMode(newSharingLevel); + + MapMarker marker = markerHash.get(id); + + Icon defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.red_marker); + + if(newSharingLevel.equals(SharingLevel.APPROXIMATED.toString())){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker); + }else if(newSharingLevel.equals(SharingLevel.MANUAL.toString())){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.green_marker); + }else if(id.equals(myID)){ + defaultIcon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker); + } + + marker.setDefaultIcon(defaultIcon); + marker.restoreDefaultIcon(); + + // chba niepotrzbene + mapboxMap.getMarkerViewManager().update(); + } + } // For next fetch @@ -562,7 +609,6 @@ public class MapActivity extends BaseActivity @Override public void onRequestPermissionsResult(int requestCode, @android.support.annotation.NonNull String[] permissions, @android.support.annotation.NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); -// permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults); } @Override @@ -609,23 +655,25 @@ public class MapActivity extends BaseActivity private void filterMarkers(List users) { restoreMapMarkers(); - Icon icon1 = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker); + Icon markedMarker = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker); - List markersToSet = Stream.of(mapboxMap.getMarkers()) - .filter(m -> Stream.of(users).anyMatch(u -> u.getId().equals(m.getTitle()))) + List markersToSet = Stream.of(markerHash.values()) + .filter(m -> Stream.of(users).anyMatch(u -> u.getId().equals(m.getMarker().getTitle()))) .toList(); - for (Marker marker : markersToSet) { - marker.setIcon(icon1); + for (MapMarker marker : markersToSet) { + marker.getMarker().setIcon(markedMarker); } + + mapboxMap.getMarkerViewManager().update(); } public void restoreMapMarkers() { - Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.red_marker); - - for (Marker marker : mapboxMap.getMarkers()) { - marker.setIcon(icon); + for (MapMarker marker : markerHash.values()) { + marker.restoreDefaultIcon(); } + + mapboxMap.getMarkerViewManager().update(); } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/MapMarker.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/MapMarker.java new file mode 100644 index 0000000..06b6d84 --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/MapMarker.java @@ -0,0 +1,50 @@ +package com.uam.wmi.findmytutor.utils; + +import com.mapbox.mapboxsdk.annotations.Icon; +import com.mapbox.mapboxsdk.annotations.Marker; +import com.mapbox.mapboxsdk.annotations.MarkerOptions; + +public class MapMarker { + + private MarkerOptions markerOptions; + private Marker marker; + private String markerType; + private Icon defaultIcon; + private Icon markerIcon; + + + public MapMarker(Marker marker, MarkerOptions markerOptions, Icon icon, String markerType) { + this.setMarker(marker); + this.setMarkerOptions(markerOptions); + this.defaultIcon = icon; + this.markerType = markerType; + } + + public void restoreDefaultIcon() { + this.marker.setIcon(this.defaultIcon); + } + + public void setDefaultIcon(Icon icon) { + this.defaultIcon = icon; + } + + private void changeMarkerType(String markerType) { + this.markerType = markerType; + } + + public MarkerOptions getMarkerOptions() { + return markerOptions; + } + + private void setMarkerOptions(MarkerOptions marker) { + this.markerOptions = marker; + } + + public Marker getMarker() { + return marker; + } + + public void setMarker(Marker marker) { + this.marker = marker; + } +}