Location picker tweaks and bug fixes

pull/795/head
Alex Baker 5 years ago
parent 811c6a2a08
commit 15b98fa4d4

@ -48,6 +48,9 @@ public class GoogleMapFragment implements MapFragment, OnMapReadyCallback, OnMar
@Override
public MapPosition getMapPosition() {
if (map == null) {
return null;
}
CameraPosition cameraPosition = map.getCameraPosition();
LatLng target = cameraPosition.target;
return new MapPosition(target.latitude, target.longitude, cameraPosition.zoom);

@ -6,6 +6,7 @@ import static org.tasks.data.Place.newPlace;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.libraries.places.api.Places;
@ -16,6 +17,7 @@ import com.google.android.libraries.places.api.model.RectangularBounds;
import com.google.android.libraries.places.api.net.FetchPlaceRequest;
import com.google.android.libraries.places.api.net.FetchPlaceResponse;
import com.google.android.libraries.places.api.net.FindAutocompletePredictionsRequest;
import com.google.android.libraries.places.api.net.FindAutocompletePredictionsRequest.Builder;
import com.google.android.libraries.places.api.net.PlacesClient;
import java.util.ArrayList;
import java.util.List;
@ -53,7 +55,7 @@ public class GooglePlacesSearchProvider implements PlaceSearchProvider {
@Override
public void search(
String query,
MapPosition bias,
@Nullable MapPosition bias,
Callback<List<PlaceSearchResult>> onSuccess,
Callback<String> onError) {
if (!Places.isInitialized()) {
@ -65,17 +67,17 @@ public class GooglePlacesSearchProvider implements PlaceSearchProvider {
if (token == null) {
token = AutocompleteSessionToken.newInstance();
}
Builder request =
FindAutocompletePredictionsRequest.builder().setSessionToken(token).setQuery(query);
if (bias != null) {
request.setLocationBias(
RectangularBounds.newInstance(
LatLngBounds.builder()
.include(new LatLng(bias.getLatitude(), bias.getLongitude()))
.build()));
}
placesClient
.findAutocompletePredictions(
FindAutocompletePredictionsRequest.builder()
.setSessionToken(token)
.setQuery(query)
.setLocationBias(
RectangularBounds.newInstance(
LatLngBounds.builder()
.include(new LatLng(bias.getLatitude(), bias.getLongitude()))
.build()))
.build())
.findAutocompletePredictions(request.build())
.addOnSuccessListener(
response -> onSuccess.call(toSearchResults(response.getAutocompletePredictions())))
.addOnFailureListener(e -> onError.call(e.getMessage()));

@ -22,6 +22,7 @@ import android.view.MenuItem.OnActionExpandListener;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.SearchView.OnQueryTextListener;
import androidx.appcompat.widget.Toolbar;
@ -120,7 +121,7 @@ public class LocationPickerActivity extends InjectingAppCompatActivity
@Inject MapFragment map;
private CompositeDisposable disposables;
private MapPosition mapPosition;
@Nullable private MapPosition mapPosition;
private LocationPickerAdapter recentsAdapter = new LocationPickerAdapter(this);
private LocationSearchAdapter searchAdapter;
private List<PlaceUsage> places = Collections.emptyList();
@ -174,10 +175,10 @@ public class LocationPickerActivity extends InjectingAppCompatActivity
recentsAdapter.setCurrentPlace(currentPlace);
if (savedInstanceState == null) {
if (currentPlace != null) {
mapPosition = currentPlace.getMapPosition();
}
mapPosition = getIntent().getParcelableExtra(EXTRA_MAP_POSITION);
mapPosition =
currentPlace == null
? getIntent().getParcelableExtra(EXTRA_MAP_POSITION)
: currentPlace.getMapPosition();
} else {
mapPosition = savedInstanceState.getParcelable(EXTRA_MAP_POSITION);
offset = savedInstanceState.getInt(EXTRA_APPBAR_OFFSET);
@ -248,7 +249,8 @@ public class LocationPickerActivity extends InjectingAppCompatActivity
searchAdapter = new LocationSearchAdapter(searchProvider.getAttributionRes(dark), this);
recentsAdapter.setHasStableIds(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(search.isActionViewExpanded() ? searchAdapter : recentsAdapter);
recyclerView.setAdapter(
search != null && search.isActionViewExpanded() ? searchAdapter : recentsAdapter);
}
@Override
@ -280,7 +282,7 @@ public class LocationPickerActivity extends InjectingAppCompatActivity
}
private boolean closeSearch() {
return search.isActionViewExpanded() && search.collapseActionView();
return search != null && search.isActionViewExpanded() && search.collapseActionView();
}
@Override

@ -1,5 +1,6 @@
package org.tasks.location;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentManager;
import java.util.List;
import org.tasks.data.Place;
@ -8,7 +9,7 @@ public interface MapFragment {
void init(FragmentManager fragmentManager, MapFragmentCallback callback, boolean dark);
MapPosition getMapPosition();
@Nullable MapPosition getMapPosition();
void movePosition(MapPosition mapPosition, boolean animate);

@ -54,6 +54,9 @@ public class MapboxMapFragment implements MapFragment, OnMapReadyCallback, OnMar
@Override
public MapPosition getMapPosition() {
if (map == null) {
return null;
}
CameraPosition cameraPosition = map.getCameraPosition();
LatLng target = cameraPosition.target;
return new MapPosition(

@ -5,6 +5,7 @@ import static org.tasks.data.Place.newPlace;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.mapbox.api.geocoding.v5.MapboxGeocoding;
import com.mapbox.api.geocoding.v5.models.CarmenFeature;
import com.mapbox.api.geocoding.v5.models.GeocodingResponse;
@ -41,17 +42,16 @@ public class MapboxSearchProvider implements PlaceSearchProvider {
@Override
public void search(
String query,
MapPosition bias,
@Nullable MapPosition bias,
Callback<List<PlaceSearchResult>> onSuccess,
Callback<String> onError) {
if (builder == null) {
String token = context.getString(R.string.mapbox_key);
Mapbox.getInstance(context, token);
builder =
MapboxGeocoding.builder()
.autocomplete(true)
.accessToken(token)
.proximity(Point.fromLngLat(bias.getLongitude(), bias.getLatitude()));
builder = MapboxGeocoding.builder().autocomplete(true).accessToken(token);
if (bias != null) {
builder.proximity(Point.fromLngLat(bias.getLongitude(), bias.getLatitude()));
}
}
builder
@ -94,7 +94,6 @@ public class MapboxSearchProvider implements PlaceSearchProvider {
place.setAddress(address);
place.setLatitude(feature.center().latitude());
place.setLongitude(feature.center().longitude());
return new PlaceSearchResult(
feature.id(), place.getName(), place.getDisplayAddress(), place);
return new PlaceSearchResult(feature.id(), place.getName(), place.getDisplayAddress(), place);
}
}

@ -2,6 +2,7 @@ package org.tasks.location;
import android.os.Bundle;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import java.util.List;
import org.tasks.Callback;
import org.tasks.data.Place;
@ -15,7 +16,7 @@ public interface PlaceSearchProvider {
void search(
String query,
MapPosition bias,
@Nullable MapPosition bias,
Callback<List<PlaceSearchResult>> onSuccess,
Callback<String> onError);

@ -3,6 +3,7 @@ package org.tasks.location;
import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
@ -42,7 +43,7 @@ public class PlaceSearchViewModel extends ViewModel {
searchProvider.restoreState(savedInstanceState);
}
public void query(String query, MapPosition bias) {
public void query(String query, @Nullable MapPosition bias) {
assertMainThread();
if (Strings.isNullOrEmpty(query)) {

@ -13,6 +13,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/keyline_first"
android:paddingBottom="@dimen/keyline_first"
android:paddingStart="@dimen/keyline_content_inset"
android:paddingEnd="@dimen/keyline_second"
android:paddingLeft="@dimen/keyline_content_inset"

Loading…
Cancel
Save