diff --git a/app/src/main/java/fr/free/nrw/commons/BaseMarker.kt b/app/src/main/java/fr/free/nrw/commons/BaseMarker.kt new file mode 100644 index 000000000..277faea84 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/BaseMarker.kt @@ -0,0 +1,64 @@ +package fr.free.nrw.commons + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable +import fr.free.nrw.commons.location.LatLng +import fr.free.nrw.commons.nearby.Place + +class BaseMarker { + private var _position: LatLng = LatLng(0.0, 0.0, 0f) + private var _title: String = "" + private var _place: Place = Place() + private var _icon: Bitmap? = null + + var position: LatLng + get() = _position + set(value) { + _position = value + } + var title: String + get() = _title + set(value) { + _title = value + } + + var place: Place + get() = _place + set(value) { + _place = value + } + var icon: Bitmap? + get() = _icon + set(value) { + _icon = value + } + + constructor() { + } + + fun fromResource(context: Context, drawableResId: Int) { + val drawable: Drawable = context.resources.getDrawable(drawableResId) + icon = if (drawable is BitmapDrawable) { + (drawable as BitmapDrawable).bitmap + } else { + val bitmap = Bitmap.createBitmap( + drawable.intrinsicWidth, + drawable.intrinsicHeight, Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + drawable.setBounds(0, 0, canvas.width, canvas.height) + drawable.draw(canvas) + bitmap + } + } +} + + + + + + + diff --git a/app/src/main/java/fr/free/nrw/commons/CameraPosition.kt b/app/src/main/java/fr/free/nrw/commons/CameraPosition.kt new file mode 100644 index 000000000..31136e61b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/CameraPosition.kt @@ -0,0 +1,33 @@ +package fr.free.nrw.commons + +import android.os.Parcel +import android.os.Parcelable + +class CameraPosition(val latitude: Double, val longitude: Double, val zoom: Double) : Parcelable { + + constructor(parcel: Parcel) : this( + parcel.readDouble(), + parcel.readDouble(), + parcel.readDouble() + ) + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeDouble(latitude) + parcel.writeDouble(longitude) + parcel.writeDouble(zoom) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): CameraPosition { + return CameraPosition(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java index baa322180..58801c499 100644 --- a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPicker.java @@ -2,7 +2,7 @@ package fr.free.nrw.commons.LocationPicker; import android.app.Activity; import android.content.Intent; -import com.mapbox.mapboxsdk.camera.CameraPosition; +import fr.free.nrw.commons.CameraPosition; import fr.free.nrw.commons.Media; /** diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java index 5b1e781d7..b3fd1729d 100644 --- a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerActivity.java @@ -29,8 +29,7 @@ import androidx.appcompat.widget.AppCompatTextView; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import com.google.android.material.floatingactionbutton.FloatingActionButton; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.geometry.LatLng; +import fr.free.nrw.commons.CameraPosition; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; @@ -43,7 +42,6 @@ import fr.free.nrw.commons.location.LocationPermissionsHelper.LocationPermission import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.theme.BaseActivity; import fr.free.nrw.commons.utils.SystemThemeUtils; -import fr.free.nrw.commons.utils.ViewUtilWrapper; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import java.util.List; @@ -214,9 +212,9 @@ public class LocationPickerActivity extends BaseActivity implements fabCenterOnLocation.setVisibility(View.GONE); markerImage.setVisibility(View.GONE); shadow.setVisibility(View.GONE); - assert cameraPosition.target != null; - showSelectedLocationMarker(new GeoPoint(cameraPosition.target.getLatitude(), - cameraPosition.target.getLongitude())); + assert cameraPosition != null; + showSelectedLocationMarker(new GeoPoint(cameraPosition.getLatitude(), + cameraPosition.getLongitude())); } setupMapView(); } @@ -295,9 +293,11 @@ public class LocationPickerActivity extends BaseActivity implements smallToolbarText.setText(getResources().getString(R.string.pan_and_zoom_to_adjust)); fabCenterOnLocation.setVisibility(View.VISIBLE); removeSelectedLocationMarker(); - if (cameraPosition.target != null) { - mapView.getController().animateTo(new GeoPoint(cameraPosition.target.getLatitude(), - cameraPosition.target.getLongitude())); + if (cameraPosition != null && mapView != null) { + if (mapView.getController() != null) { + mapView.getController().animateTo(new GeoPoint(cameraPosition.getLatitude(), + cameraPosition.getLongitude())); + } } } @@ -314,9 +314,9 @@ public class LocationPickerActivity extends BaseActivity implements * move the location to the current media coordinates */ private void adjustCameraBasedOnOptions() { - if (cameraPosition.target != null) { - mapView.getController().setCenter(new GeoPoint(cameraPosition.target.getLatitude(), - cameraPosition.target.getLongitude())); + if (cameraPosition != null) { + mapView.getController().setCenter(new GeoPoint(cameraPosition.getLatitude(), + cameraPosition.getLongitude())); } } @@ -343,8 +343,8 @@ public class LocationPickerActivity extends BaseActivity implements if (media == null) { final Intent returningIntent = new Intent(); returningIntent.putExtra(LocationPickerConstants.MAP_CAMERA_POSITION, - new CameraPosition(new LatLng(mapView.getMapCenter().getLatitude(), - mapView.getMapCenter().getLongitude()), 14f, 0, 0)); + new CameraPosition(mapView.getMapCenter().getLatitude(), + mapView.getMapCenter().getLongitude(), 14.0)); setResult(AppCompatActivity.RESULT_OK, returningIntent); } else { updateCoordinates(String.valueOf(mapView.getMapCenter().getLatitude()), @@ -408,8 +408,8 @@ public class LocationPickerActivity extends BaseActivity implements for (int i = 0; i < overlays.size(); i++) { if (overlays.get(i) instanceof Marker) { Marker item = (Marker) overlays.get(i); - if (cameraPosition.target.getLatitude() == item.getPosition().getLatitude() - && cameraPosition.target.getLongitude() == item.getPosition().getLongitude()) { + if (cameraPosition.getLatitude() == item.getPosition().getLatitude() + && cameraPosition.getLongitude() == item.getPosition().getLongitude()) { mapView.getOverlays().remove(i); mapView.invalidate(); break; diff --git a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java index 79019a5a4..57bb238d2 100644 --- a/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java +++ b/app/src/main/java/fr/free/nrw/commons/LocationPicker/LocationPickerViewModel.java @@ -4,7 +4,7 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.MutableLiveData; -import com.mapbox.mapboxsdk.camera.CameraPosition; +import fr.free.nrw.commons.CameraPosition; import org.jetbrains.annotations.NotNull; import retrofit2.Call; import retrofit2.Callback; diff --git a/app/src/main/java/fr/free/nrw/commons/MapStyle.java b/app/src/main/java/fr/free/nrw/commons/MapStyle.java deleted file mode 100644 index c59fecbfc..000000000 --- a/app/src/main/java/fr/free/nrw/commons/MapStyle.java +++ /dev/null @@ -1,12 +0,0 @@ -package fr.free.nrw.commons; - -import com.mapbox.mapboxsdk.maps.Style; - -/** - * Constants for various map styles - */ -public final class MapStyle { - public static final String DARK = Style.getPredefinedStyle("Dark"); - public static final String OUTDOORS = Style.getPredefinedStyle("Outdoors"); - public static final String STREETS = Style.getPredefinedStyle("Streets"); -} diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java index d6b508f65..7862493fd 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java @@ -427,8 +427,6 @@ public class MainActivity extends BaseActivity public void centerMapToPlace(Place place) { setSelectedItemId(NavTab.NEARBY.code()); nearbyParentFragment.setNearbyParentFragmentInstanceReadyCallback(new NearbyParentFragmentInstanceReadyCallback() { - // if mapBox initialize in nearbyParentFragment then MapReady() function called - // so that nearbyParentFragemt.centerMaptoPlace(place) not throw any null pointer exception @Override public void onReady() { nearbyParentFragment.centerMapToPlace(place); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapContract.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapContract.java index b6feda208..791652475 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapContract.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapContract.java @@ -1,11 +1,10 @@ package fr.free.nrw.commons.explore.map; import android.content.Context; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager; -import fr.free.nrw.commons.nearby.NearbyBaseMarker; import java.util.List; public class ExploreMapContract { @@ -18,11 +17,10 @@ public class ExploreMapContract { void showLocationOffDialog(); void openLocationSettings(); void hideBottomDetailsSheet(); - void displayBottomSheetWithInfo(Marker marker); LatLng getMapCenter(); LatLng getMapFocus(); LatLng getLastMapFocus(); - void addMarkersToMap(final List nearbyBaseMarkers); + void addMarkersToMap(final List nearbyBaseMarkers); void clearAllMarkers(); void addSearchThisAreaButtonAction(); void setSearchThisAreaButtonVisibility(boolean isVisible); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapController.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapController.java index f74025fd8..def735e86 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapController.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapController.java @@ -14,13 +14,11 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; -import com.mapbox.mapboxsdk.annotations.IconFactory; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.location.LatLng; -import fr.free.nrw.commons.nearby.NearbyBaseMarker; import fr.free.nrw.commons.nearby.Place; import fr.free.nrw.commons.utils.ImageUtils; import fr.free.nrw.commons.utils.LocationUtils; @@ -107,8 +105,8 @@ public class ExploreMapController extends MapController { // Sets latestSearchRadius to maximum distance among boundaries and search location for (LatLng bound : boundaryCoordinates) { - double distance = LocationUtils.commonsLatLngToMapBoxLatLng(bound) - .distanceTo(LocationUtils.commonsLatLngToMapBoxLatLng(latestSearchLocation)); + double distance = LocationUtils.calculateDistance(bound.getLatitude(), + bound.getLongitude(), searchLatLng.getLatitude(), searchLatLng.getLongitude()); if (distance > latestSearchRadius) { latestSearchRadius = distance; } @@ -130,17 +128,16 @@ public class ExploreMapController extends MapController { * * @return baseMarkerOptions list that holds nearby places with their icons */ - public static List loadAttractionsFromLocationToBaseMarkerOptions( + public static List loadAttractionsFromLocationToBaseMarkerOptions( LatLng curLatLng, final List placeList, Context context, NearbyBaseMarkerThumbCallback callback, - Marker selectedMarker, ExplorePlacesInfo explorePlacesInfo) { - List baseMarkerOptions = new ArrayList<>(); + List baseMarkerList = new ArrayList<>(); if (placeList == null) { - return baseMarkerOptions; + return baseMarkerList; } VectorDrawableCompat vectorDrawable = null; @@ -153,17 +150,17 @@ public class ExploreMapController extends MapController { } if (vectorDrawable != null) { for (Place explorePlace : placeList) { - final NearbyBaseMarker nearbyBaseMarker = new NearbyBaseMarker(); + final BaseMarker baseMarker = new BaseMarker(); String distance = formatDistanceBetween(curLatLng, explorePlace.location); explorePlace.setDistance(distance); - nearbyBaseMarker.title( + baseMarker.setTitle( explorePlace.name.substring(5, explorePlace.name.lastIndexOf("."))); - nearbyBaseMarker.position( - new com.mapbox.mapboxsdk.geometry.LatLng( + baseMarker.setPosition( + new fr.free.nrw.commons.location.LatLng( explorePlace.location.getLatitude(), - explorePlace.location.getLongitude())); - nearbyBaseMarker.place(explorePlace); + explorePlace.location.getLongitude(), 0)); + baseMarker.setPlace(explorePlace); Glide.with(context) .asBitmap() @@ -175,13 +172,13 @@ public class ExploreMapController extends MapController { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { - nearbyBaseMarker.setIcon(IconFactory.getInstance(context).fromBitmap( - ImageUtils.addRedBorder(resource, 6, context))); - baseMarkerOptions.add(nearbyBaseMarker); - if (baseMarkerOptions.size() + baseMarker.setIcon( + ImageUtils.addRedBorder(resource, 6, context)); + baseMarkerList.add(baseMarker); + if (baseMarkerList.size() == placeList.size()) { // if true, we added all markers to list and can trigger thumbs ready callback - callback.onNearbyBaseMarkerThumbsReady(baseMarkerOptions, - explorePlacesInfo, selectedMarker); + callback.onNearbyBaseMarkerThumbsReady(baseMarkerList, + explorePlacesInfo); } } @@ -193,25 +190,24 @@ public class ExploreMapController extends MapController { @Override public void onLoadFailed(@Nullable final Drawable errorDrawable) { super.onLoadFailed(errorDrawable); - nearbyBaseMarker.setIcon(IconFactory.getInstance(context) - .fromResource(R.drawable.image_placeholder_96)); - baseMarkerOptions.add(nearbyBaseMarker); - if (baseMarkerOptions.size() + baseMarker.fromResource(context, R.drawable.image_placeholder_96); + baseMarkerList.add(baseMarker); + if (baseMarkerList.size() == placeList.size()) { // if true, we added all markers to list and can trigger thumbs ready callback - callback.onNearbyBaseMarkerThumbsReady(baseMarkerOptions, - explorePlacesInfo, selectedMarker); + callback.onNearbyBaseMarkerThumbsReady(baseMarkerList, + explorePlacesInfo); } } }); } } - return baseMarkerOptions; + return baseMarkerList; } interface NearbyBaseMarkerThumbCallback { // Callback to notify thumbnails of explore markers are added as icons and ready - void onNearbyBaseMarkerThumbsReady(List baseMarkers, - ExplorePlacesInfo explorePlacesInfo, Marker selectedMarker); + void onNearbyBaseMarkerThumbsReady(List baseMarkers, + ExplorePlacesInfo explorePlacesInfo); } } diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java index 238a19111..17baca795 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapFragment.java @@ -38,7 +38,7 @@ import androidx.core.content.ContextCompat; import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; @@ -53,8 +53,6 @@ import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.location.LocationUpdateListener; import fr.free.nrw.commons.media.MediaClient; -import fr.free.nrw.commons.nearby.NearbyBaseMarker; -import fr.free.nrw.commons.nearby.NearbyMarker; import fr.free.nrw.commons.nearby.Place; import fr.free.nrw.commons.utils.DialogUtil; import fr.free.nrw.commons.utils.MapUtils; @@ -101,8 +99,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment private fr.free.nrw.commons.location.LatLng lastFocusLocation; // last location that map is focused public List mediaList; private boolean recenterToUserLocation; // true is recenter is needed (ie. when current location is in visible map boundaries) - private NearbyBaseMarker clickedMarker; - private Marker selectedMarker; // the marker that user selected + private BaseMarker clickedMarker; private GeoPoint mapCenter; private GeoPoint lastMapFocus; IntentFilter intentFilter = new IntentFilter(MapUtils.NETWORK_INTENT_ACTION); @@ -436,7 +433,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment * @param explorePlacesInfo holds several information as current location, marker list etc. */ private void updateMapMarkers(final MapController.ExplorePlacesInfo explorePlacesInfo) { - presenter.updateMapMarkers(explorePlacesInfo, selectedMarker); + presenter.updateMapMarkers(explorePlacesInfo); } private void showErrorMessage(final String message) { @@ -547,15 +544,6 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); } - @Override - public void displayBottomSheetWithInfo(final Marker marker) { - selectedMarker = marker; - final NearbyMarker nearbyMarker = (NearbyMarker) marker; - final Place place = nearbyMarker.getNearbyBaseMarker().getPlace(); - passInfoToSheet(place); - bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); - } - /** * Same bottom sheet carries information for all nearby places, so we need to pass information * (title, description, distance and links) to view on nearby marker click @@ -644,7 +632,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment * @param nearbyBaseMarkers The NearbyBaseMarker object representing the markers to be added. */ @Override - public void addMarkersToMap(List nearbyBaseMarkers) { + public void addMarkersToMap(List nearbyBaseMarkers) { clearAllMarkers(); for (int i = 0; i < nearbyBaseMarkers.size(); i++) { addMarkerToMap(nearbyBaseMarkers.get(i)); @@ -657,9 +645,9 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment * * @param nearbyBaseMarker The NearbyBaseMarker object representing the marker to be added. */ - private void addMarkerToMap(NearbyBaseMarker nearbyBaseMarker) { + private void addMarkerToMap(BaseMarker nearbyBaseMarker) { ArrayList items = new ArrayList<>(); - Bitmap icon = nearbyBaseMarker.getMarker().getIcon().getBitmap(); + Bitmap icon = nearbyBaseMarker.getIcon(); Drawable d = new BitmapDrawable(getResources(), icon); GeoPoint point = new GeoPoint( nearbyBaseMarker.getPlace().location.getLatitude(), @@ -699,7 +687,7 @@ public class ExploreMapFragment extends CommonsDaggerSupportFragment * * @param nearbyBaseMarker The NearbyBaseMarker object representing the marker to be removed. */ - private void removeMarker(NearbyBaseMarker nearbyBaseMarker) { + private void removeMarker(BaseMarker nearbyBaseMarker) { Place place = nearbyBaseMarker.getPlace(); List overlays = binding.mapView.getOverlays(); ItemizedOverlayWithFocus item; diff --git a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapPresenter.java b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapPresenter.java index b47810c46..303adc409 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/map/ExploreMapPresenter.java @@ -6,7 +6,7 @@ import static fr.free.nrw.commons.location.LocationServiceManager.LocationChange import android.location.Location; import android.view.View; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.MapController; import fr.free.nrw.commons.MapController.ExplorePlacesInfo; import fr.free.nrw.commons.bookmarks.locations.BookmarkLocationsDao; @@ -14,7 +14,6 @@ import fr.free.nrw.commons.explore.map.ExploreMapController.NearbyBaseMarkerThum import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType; -import fr.free.nrw.commons.nearby.NearbyBaseMarker; import io.reactivex.Observable; import java.lang.reflect.Proxy; import java.util.List; @@ -159,30 +158,28 @@ public class ExploreMapPresenter * @param explorePlacesInfo This variable has placeToCenter list information and distances. */ public void updateMapMarkers( - MapController.ExplorePlacesInfo explorePlacesInfo, Marker selectedMarker) { + MapController.ExplorePlacesInfo explorePlacesInfo) { if (explorePlacesInfo.mediaList != null) { - prepareNearbyBaseMarkers(explorePlacesInfo, selectedMarker); + prepareNearbyBaseMarkers(explorePlacesInfo); } else { lockUnlockNearby(false); // So that new location updates wont come exploreMapFragmentView.setProgressBarVisibility(false); } } - void prepareNearbyBaseMarkers(MapController.ExplorePlacesInfo explorePlacesInfo, - Marker selectedMarker) { + void prepareNearbyBaseMarkers(MapController.ExplorePlacesInfo explorePlacesInfo) { exploreMapController .loadAttractionsFromLocationToBaseMarkerOptions(explorePlacesInfo.curLatLng, // Curlatlang will be used to calculate distances explorePlacesInfo.explorePlaceList, exploreMapFragmentView.getContext(), this, - selectedMarker, explorePlacesInfo); } @Override - public void onNearbyBaseMarkerThumbsReady(List baseMarkers, - ExplorePlacesInfo explorePlacesInfo, Marker selectedMarker) { + public void onNearbyBaseMarkerThumbsReady(List baseMarkers, + ExplorePlacesInfo explorePlacesInfo) { if (null != exploreMapFragmentView) { exploreMapFragmentView.addMarkersToMap(baseMarkers); lockUnlockNearby(false); // So that new location updates wont come diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index a7a4ce992..063cac034 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -47,9 +47,8 @@ import com.facebook.drawee.controller.ControllerListener; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.imagepipeline.image.ImageInfo; import com.facebook.imagepipeline.request.ImageRequest; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.geometry.LatLng; import fr.free.nrw.commons.BuildConfig; +import fr.free.nrw.commons.CameraPosition; import fr.free.nrw.commons.LocationPicker.LocationPicker; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.MediaDataExtractor; @@ -872,9 +871,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment implements startActivity(new LocationPicker.IntentBuilder() - .defaultLocation(new CameraPosition.Builder() - .target(new LatLng(defaultLatitude, defaultLongitude)) - .zoom(16).build()) + .defaultLocation(new CameraPosition(defaultLatitude,defaultLongitude,16.0)) .activityKey("MediaActivity") .media(media) .build(getActivity())); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/MarkerPlaceGroup.java b/app/src/main/java/fr/free/nrw/commons/nearby/MarkerPlaceGroup.java index 58d63fa6c..691f60f6a 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/MarkerPlaceGroup.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/MarkerPlaceGroup.java @@ -1,26 +1,18 @@ package fr.free.nrw.commons.nearby; -import com.mapbox.mapboxsdk.annotations.Marker; - /** * This class groups visual map item Marker with the reated data of displayed place and information * of bookmark */ public class MarkerPlaceGroup { - private Marker marker; // Marker item from the map private boolean isBookmarked; // True if user bookmarked the place private Place place; // Place of the location displayed by the marker - public MarkerPlaceGroup(Marker marker, boolean isBookmarked, Place place) { - this.marker = marker; + public MarkerPlaceGroup(boolean isBookmarked, Place place) { this.isBookmarked = isBookmarked; this.place = place; } - public Marker getMarker() { - return marker; - } - public Place getPlace() { return place; } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyBaseMarker.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyBaseMarker.java deleted file mode 100644 index 0bb097ce9..000000000 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyBaseMarker.java +++ /dev/null @@ -1,93 +0,0 @@ -package fr.free.nrw.commons.nearby; - -import android.graphics.Bitmap; -import android.os.Parcel; -import android.os.Parcelable; - -import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; -import com.mapbox.mapboxsdk.annotations.Icon; -import com.mapbox.mapboxsdk.annotations.IconFactory; -import com.mapbox.mapboxsdk.geometry.LatLng; -import java.util.Objects; - -public class NearbyBaseMarker extends BaseMarkerOptions { - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public NearbyBaseMarker createFromParcel(Parcel in) { - return new NearbyBaseMarker(in); - } - - @Override - public NearbyBaseMarker[] newArray(int size) { - return new NearbyBaseMarker[size]; - } - }; - - private Place place; - - public NearbyBaseMarker() { - } - - private NearbyBaseMarker(Parcel in) { - position(in.readParcelable(LatLng.class.getClassLoader())); - snippet(in.readString()); - String iconId = in.readString(); - Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader()); - Icon icon = IconFactory.recreate(iconId, iconBitmap); - icon(icon); - title(in.readString()); - place(in.readParcelable(Place.class.getClassLoader())); - } - - public NearbyBaseMarker place(Place place) { - this.place = place; - return this; - } - - @Override - public NearbyBaseMarker getThis() { - return this; - } - - @Override - public NearbyMarker getMarker() { - return new NearbyMarker(this, place); - } - - public Place getPlace() { - return place; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeParcelable(position, flags); - dest.writeString(snippet); - dest.writeString(icon.getId()); - dest.writeParcelable(icon.getBitmap(), flags); - dest.writeString(title); - dest.writeParcelable(place, 0); - } - - @Override - public boolean equals(final Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - final NearbyBaseMarker that = (NearbyBaseMarker) o; - return Objects.equals(place.location, that.place.location); - } - - @Override - public int hashCode() { - return Objects.hash(place); - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java index c55f07be2..2cdc0f233 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java @@ -1,18 +1,11 @@ package fr.free.nrw.commons.nearby; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; import androidx.annotation.MainThread; import androidx.annotation.Nullable; -import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; -import com.mapbox.mapboxsdk.annotations.IconFactory; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.MapController; -import fr.free.nrw.commons.R; import fr.free.nrw.commons.location.LatLng; -import fr.free.nrw.commons.utils.UiUtils; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -36,8 +29,6 @@ public class NearbyController extends MapController { public static double latestSearchRadius = 10.0; // Any last search radius except closest result search public static List markerLabelList = new ArrayList<>(); - public static Map markerExistsMap; - public static Map markerNeedPicMap; @Inject public NearbyController(NearbyPlaces nearbyPlaces) { @@ -151,81 +142,33 @@ public class NearbyController extends MapController { * @param placeList list of nearby places in Place data type * @return BaseMarkerOptions list that holds nearby places */ - public static List loadAttractionsFromLocationToBaseMarkerOptions( + public static List loadAttractionsFromLocationToBaseMarkerOptions( LatLng curLatLng, - List placeList, - Context context, - List bookmarkplacelist) { - List baseMarkerOptions = new ArrayList<>(); + List placeList) { + List baseMarkersList = new ArrayList<>(); if (placeList == null) { - return baseMarkerOptions; + return baseMarkersList; } - placeList = placeList.subList(0, Math.min(placeList.size(), MAX_RESULTS)); - - VectorDrawableCompat vectorDrawable = null; - VectorDrawableCompat vectorDrawableGreen = null; - VectorDrawableCompat vectorDrawableGrey = null; - VectorDrawableCompat vectorDrawableMonuments = null; - vectorDrawable = null; - try { - vectorDrawable = VectorDrawableCompat.create( - context.getResources(), R.drawable.ic_custom_map_marker, context.getTheme()); - vectorDrawableGreen = VectorDrawableCompat.create( - context.getResources(), R.drawable.ic_custom_map_marker_green, context.getTheme()); - vectorDrawableGrey = VectorDrawableCompat.create( - context.getResources(), R.drawable.ic_custom_map_marker_grey, context.getTheme()); - vectorDrawableMonuments = VectorDrawableCompat - .create(context.getResources(), R.drawable.ic_custom_map_marker_monuments, - context.getTheme()); - } catch (Resources.NotFoundException e) { - // ignore when running tests. + for (Place place : placeList) { + BaseMarker baseMarker = new BaseMarker(); + String distance = formatDistanceBetween(curLatLng, place.location); + place.setDistance(distance); + baseMarker.setTitle(place.name); + baseMarker.setPosition( + new fr.free.nrw.commons.location.LatLng( + place.location.getLatitude(), + place.location.getLongitude(),0)); + baseMarker.setPlace(place); + baseMarkersList.add(baseMarker); } - if (vectorDrawable != null) { - Bitmap icon = UiUtils.getBitmap(vectorDrawable); - Bitmap iconGreen = UiUtils.getBitmap(vectorDrawableGreen); - Bitmap iconGrey = UiUtils.getBitmap(vectorDrawableGrey); - Bitmap iconMonuments = UiUtils.getBitmap(vectorDrawableMonuments); - - for (Place place : placeList) { - NearbyBaseMarker nearbyBaseMarker = new NearbyBaseMarker(); - String distance = formatDistanceBetween(curLatLng, place.location); - place.setDistance(distance); - - nearbyBaseMarker.title(place.name); - nearbyBaseMarker.position( - new com.mapbox.mapboxsdk.geometry.LatLng( - place.location.getLatitude(), - place.location.getLongitude())); - nearbyBaseMarker.place(place); - // Check if string is only spaces or empty, if so place doesn't have any picture - - if (place.isMonument()) { - nearbyBaseMarker.icon(IconFactory.getInstance(context) - .fromBitmap(iconMonuments)); - } - else if (!place.pic.trim().isEmpty()) { - if (iconGreen != null) { - nearbyBaseMarker.icon(IconFactory.getInstance(context) - .fromBitmap(iconGreen)); - } - } else if (!place.exists) { // Means that the topic of the Wikidata item does not exist in the real world anymore, for instance it is a past event, or a place that was destroyed - if (iconGrey != null) { - nearbyBaseMarker.icon(IconFactory.getInstance(context) - .fromBitmap(iconGrey)); - } - } else { - nearbyBaseMarker.icon(IconFactory.getInstance(context) - .fromBitmap(icon)); - } - baseMarkerOptions.add(nearbyBaseMarker); - } - } - - return baseMarkerOptions; + return baseMarkersList; } + + + /** * Updates makerLabelList item isBookmarked value * @param place place which is bookmarked @@ -236,7 +179,7 @@ public class NearbyController extends MapController { for (ListIterator iter = markerLabelList.listIterator(); iter.hasNext();) { MarkerPlaceGroup markerPlaceGroup = iter.next(); if (markerPlaceGroup.getPlace().getWikiDataEntityId().equals(place.getWikiDataEntityId())) { - iter.set(new MarkerPlaceGroup(markerPlaceGroup.getMarker(), isBookmarked, place)); + iter.set(new MarkerPlaceGroup(isBookmarked, place)); } } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMarker.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMarker.java deleted file mode 100644 index 08125e64c..000000000 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMarker.java +++ /dev/null @@ -1,27 +0,0 @@ -package fr.free.nrw.commons.nearby; - -import com.mapbox.mapboxsdk.annotations.Marker; - -public class NearbyMarker extends Marker { - private final Place place; - private NearbyBaseMarker nearbyBaseMarker; - - /** - * Creates a instance of {@link Marker} using the builder of Marker. - * - * @param baseMarkerOptions The builder used to construct the Marker. - */ - NearbyMarker(NearbyBaseMarker baseMarkerOptions, Place place) { - super(baseMarkerOptions); - this.place = place; - this.nearbyBaseMarker = baseMarkerOptions; - } - - public NearbyBaseMarker getNearbyBaseMarker() { - return nearbyBaseMarker; - } - - public Place getPlace() { - return place; - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java b/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java index 3b7a3d09f..1b973f326 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java @@ -2,12 +2,11 @@ package fr.free.nrw.commons.nearby.contract; import android.content.Context; import androidx.annotation.Nullable; -import com.mapbox.mapboxsdk.annotations.Marker; +import fr.free.nrw.commons.BaseMarker; import fr.free.nrw.commons.kvstore.JsonKvStore; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager.LocationChangeType; import fr.free.nrw.commons.nearby.Label; -import fr.free.nrw.commons.nearby.NearbyBaseMarker; import fr.free.nrw.commons.nearby.Place; import java.util.List; @@ -45,16 +44,12 @@ public interface NearbyParentFragmentContract { void hideBottomDetailsSheet(); - void displayBottomSheetWithInfo(Marker marker); - void addSearchThisAreaButtonAction(); void setSearchThisAreaButtonVisibility(boolean isVisible); void setProgressBarVisibility(boolean isVisible); - void setTabItemContributions(); - boolean isDetailsBottomSheetVisible(); void setBottomSheetDetailsSmaller(); @@ -75,18 +70,14 @@ public interface NearbyParentFragmentContract { void addCurrentLocationMarker(LatLng curLatLng); - void updateMapToTrackPosition(LatLng curLatLng); - void clearAllMarkers(); Context getContext(); - void updateMapMarkers(List nearbyBaseMarkers, Marker selectedMarker); + void updateMapMarkers(List BaseMarkers); void filterOutAllMarkers(); - void displayAllMarkers(); - void filterMarkersByLabels(List