Add default icon for each type of localization

This commit is contained in:
Mieszko Wrzeszczyński 2018-11-23 22:27:59 +01:00
parent fca6cd936c
commit 73fc5f9b0b
3 changed files with 128 additions and 29 deletions

View File

@ -153,9 +153,10 @@ public class LoginActivity extends AppCompatActivity {
private void loginProcess(String email, String password) { 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()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResponse, this::handleError)); .subscribe(this::handleResponse, this::handleError));

View File

@ -41,8 +41,10 @@ import com.uam.wmi.findmytutor.model.User;
import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.network.ApiClient;
import com.uam.wmi.findmytutor.service.CoordinateService; import com.uam.wmi.findmytutor.service.CoordinateService;
import com.uam.wmi.findmytutor.service.UserService; 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.PrefUtils;
import com.uam.wmi.findmytutor.utils.RestApiHelper; import com.uam.wmi.findmytutor.utils.RestApiHelper;
import com.uam.wmi.findmytutor.utils.SharingLevel;
import com.uam.wmi.findmytutor.utils.mapUtils; import com.uam.wmi.findmytutor.utils.mapUtils;
import java.util.ArrayList; import java.util.ArrayList;
@ -61,8 +63,7 @@ import timber.log.Timber;
public class MapActivity extends BaseActivity public class MapActivity extends BaseActivity
implements PermissionsListener, OnMapReadyCallback { implements PermissionsListener, OnMapReadyCallback {
private String tag = getClass().getName(); private String tag = getClass().getName();
private PermissionsManager permissionsManager; private PermissionsManager permissionsManager;
private LocationComponent locationComponent; private LocationComponent locationComponent;
@ -82,7 +83,7 @@ public class MapActivity extends BaseActivity
private Marker tmpLocalMarker; private Marker tmpLocalMarker;
private Coordinate droppedMarkercoordinate; private Coordinate droppedMarkercoordinate;
private HashMap<String, Coordinate> coordsMap = new HashMap<>(); private HashMap<String, Coordinate> coordsMap = new HashMap<>();
private HashMap<String, Marker> markerHash = new HashMap<>(); private HashMap<String, MapMarker> markerHash = new HashMap<>();
private Set<String> previousCoordsIds = new HashSet<>(); private Set<String> previousCoordsIds = new HashSet<>();
// Camera Animation params // Camera Animation params
@ -112,9 +113,6 @@ public class MapActivity extends BaseActivity
} }
}; };
Bundle extras = getIntent().getExtras();
selectLocationButton = findViewById(R.id.select_location_button); selectLocationButton = findViewById(R.id.select_location_button);
removeLocationButton = findViewById(R.id.remove_location_button); removeLocationButton = findViewById(R.id.remove_location_button);
Mapbox.getInstance(this, getString(R.string.access_token)); Mapbox.getInstance(this, getString(R.string.access_token));
@ -157,7 +155,6 @@ public class MapActivity extends BaseActivity
setToggleMapBoundsArea(); setToggleMapBoundsArea();
setOnMapLongClickListener(); setOnMapLongClickListener();
// addStaticLayer();
} }
private void setToggleMapBoundsArea() { private void setToggleMapBoundsArea() {
@ -333,7 +330,6 @@ public class MapActivity extends BaseActivity
@Override @Override
public void onSuccess(List<Coordinate> coordsList) { public void onSuccess(List<Coordinate> coordsList) {
if (coordsList.isEmpty() && tmpLocalMarker != null) { if (coordsList.isEmpty() && tmpLocalMarker != null) {
Timber.e("200 empty []"); Timber.e("200 empty []");
mapboxMap.clear(); mapboxMap.clear();
@ -346,6 +342,7 @@ public class MapActivity extends BaseActivity
} }
Set<String> currentCoordsIds = new HashSet<>(tmp); Set<String> currentCoordsIds = new HashSet<>(tmp);
if (previousCoordsIds.isEmpty()) { if (previousCoordsIds.isEmpty()) {
previousCoordsIds.addAll(currentCoordsIds); previousCoordsIds.addAll(currentCoordsIds);
} else { } else {
@ -353,7 +350,7 @@ public class MapActivity extends BaseActivity
if (previousCoordsIds.removeAll(currentCoordsIds)) { if (previousCoordsIds.removeAll(currentCoordsIds)) {
for (String toRemoveId : previousCoordsIds) { for (String toRemoveId : previousCoordsIds) {
Log.e(tag + "delete: ", "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId)); Log.e(tag + "delete: ", "removing: " + toRemoveId + ": " + markerHash.get(toRemoveId));
mapboxMap.removeMarker(markerHash.get(toRemoveId)); mapboxMap.removeMarker(markerHash.get(toRemoveId).getMarker());
markerHash.remove(toRemoveId); markerHash.remove(toRemoveId);
coordsMap.remove(toRemoveId); coordsMap.remove(toRemoveId);
} }
@ -367,6 +364,7 @@ public class MapActivity extends BaseActivity
for (Coordinate element : coordsList) { for (Coordinate element : coordsList) {
String id = element.getUserId(); String id = element.getUserId();
String newLabel = element.getLabel(); String newLabel = element.getLabel();
String newSharingLevel = element.getDisplayMode();
Coordinate coordinate = coordsMap.get(id); Coordinate coordinate = coordsMap.get(id);
Log.e(tag, "hashMapSize: " + coordsMap.size()); Log.e(tag, "hashMapSize: " + coordsMap.size());
@ -375,11 +373,13 @@ public class MapActivity extends BaseActivity
if (coordinate != null) { if (coordinate != null) {
Log.e(tag, "Coordin: " + coordinate.getLatitude() + " | " + coordinate.getLongitude()); 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); boolean isTheSameLocalisation = coordinate.getLatitude().equals(element.getLatitude()) || coordinate.getLongitude().equals(element.getLongitude());
if (!statement) { Log.e(tag, "diff || diff: " + !isTheSameLocalisation);
if (!isTheSameLocalisation) {
Log.e(tag, "replace and animate"); 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()); LatLng toDestination = new LatLng(element.getLatitude(), element.getLongitude());
// TODO fix flickiering markers // TODO fix flickiering markers
@ -398,25 +398,72 @@ public class MapActivity extends BaseActivity
marker.setPosition(toDestination); marker.setPosition(toDestination);
} }
} else { } else {
Log.e(tag, "Marker Added: " + id); Log.e(tag, "Marker Added: " + id);
coordsMap.put(id, element); coordsMap.put(id, element);
MarkerOptions markerOptions = new MarkerOptions() /*
.title(id)
.position(new LatLng(element.getLatitude(), element.getLongitude()));
// Check if this is me // Check if this is me
if (id.equals(myID)) { if (id.equals(myID)) {
Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker); Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.blue_marker);
markerOptions.setIcon(icon); 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); markerHash.put(id, marker);
} }
coordsMap.get(id).setLabel(newLabel); 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 // For next fetch
@ -562,7 +609,6 @@ public class MapActivity extends BaseActivity
@Override @Override
public void onRequestPermissionsResult(int requestCode, @android.support.annotation.NonNull String[] permissions, @android.support.annotation.NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @android.support.annotation.NonNull String[] permissions, @android.support.annotation.NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
@Override @Override
@ -609,23 +655,25 @@ public class MapActivity extends BaseActivity
private void filterMarkers(List<User> users) { private void filterMarkers(List<User> users) {
restoreMapMarkers(); restoreMapMarkers();
Icon icon1 = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker); Icon markedMarker = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.custom_marker);
List<Marker> markersToSet = Stream.of(mapboxMap.getMarkers()) List<MapMarker> markersToSet = Stream.of(markerHash.values())
.filter(m -> Stream.of(users).anyMatch(u -> u.getId().equals(m.getTitle()))) .filter(m -> Stream.of(users).anyMatch(u -> u.getId().equals(m.getMarker().getTitle())))
.toList(); .toList();
for (Marker marker : markersToSet) { for (MapMarker marker : markersToSet) {
marker.setIcon(icon1); marker.getMarker().setIcon(markedMarker);
} }
mapboxMap.getMarkerViewManager().update();
} }
public void restoreMapMarkers() { public void restoreMapMarkers() {
Icon icon = IconFactory.getInstance(MapActivity.this).fromResource(R.drawable.red_marker); for (MapMarker marker : markerHash.values()) {
marker.restoreDefaultIcon();
for (Marker marker : mapboxMap.getMarkers()) {
marker.setIcon(icon);
} }
mapboxMap.getMarkerViewManager().update();
} }
} }

View File

@ -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;
}
}