diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java')
72 files changed, 1535 insertions, 1858 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java index 3f20f19f5d..95cc9687f2 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java @@ -16,7 +16,6 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; -import android.view.View; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.adapter.FeatureAdapter; @@ -62,19 +61,16 @@ public class FeatureOverviewActivity extends AppCompatActivity implements Permis recyclerView.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener()); recyclerView.setHasFixedSize(true); - ItemClickSupport.addTo(recyclerView).setOnItemClickListener(new ItemClickSupport.OnItemClickListener() { - @Override - public void onItemClicked(RecyclerView recyclerView, int position, View view) { - if (!sectionAdapter.isSectionHeaderPosition(position)) { - int itemPosition = sectionAdapter.getConvertedPosition(position); - Feature feature = features.get(itemPosition); - if (feature.isRequiresLocationPermission()) { - if (requestLocationPermission(itemPosition)) { - return; - } + ItemClickSupport.addTo(recyclerView).setOnItemClickListener((recyclerView, position, view) -> { + if (!sectionAdapter.isSectionHeaderPosition(position)) { + int itemPosition = sectionAdapter.getConvertedPosition(position); + Feature feature = features.get(itemPosition); + if (feature.isRequiresLocationPermission()) { + if (requestLocationPermission(itemPosition)) { + return; } - startFeature(feature); } + startFeature(feature); } }); @@ -188,15 +184,12 @@ public class FeatureOverviewActivity extends AppCompatActivity implements Permis } if (!features.isEmpty()) { - Comparator<Feature> comparator = new Comparator<Feature>() { - @Override - public int compare(Feature lhs, Feature rhs) { - int result = lhs.getCategory().compareToIgnoreCase(rhs.getCategory()); - if (result == 0) { - result = lhs.getLabel().compareToIgnoreCase(rhs.getLabel()); - } - return result; + Comparator<Feature> comparator = (lhs, rhs) -> { + int result = lhs.getCategory().compareToIgnoreCase(rhs.getCategory()); + if (result == 0) { + result = lhs.getLabel().compareToIgnoreCase(rhs.getLabel()); } + return result; }; Collections.sort(features, comparator); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java index d8752bbea2..a557bb4ed4 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java @@ -7,7 +7,6 @@ import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.os.Bundle; import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; import android.support.v4.content.res.ResourcesCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; @@ -24,7 +23,6 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.utils.IconUtils; import com.mapbox.services.api.utils.turf.TurfMeasurement; @@ -59,25 +57,18 @@ public class AnimatedMarkerActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { + mapView.getMapAsync(mapboxMap -> { + AnimatedMarkerActivity.this.mapboxMap = mapboxMap; + setupMap(); - @Override - public void onMapReady(@NonNull final MapboxMap mapboxMap) { - AnimatedMarkerActivity.this.mapboxMap = mapboxMap; - setupMap(); - - animationRunnable = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 10; i++) { - addRandomCar(); - } - addPassenger(); - addMainCar(); - } - }; - mapView.post(animationRunnable); - } + animationRunnable = () -> { + for (int i = 0; i < 10; i++) { + addRandomCar(); + } + addPassenger(); + addMainCar(); + }; + mapView.post(animationRunnable); }); } @@ -116,13 +107,10 @@ public class AnimatedMarkerActivity extends AppCompatActivity { if (carMarker == null) { carMarker = createCarMarker(randomLatLng, R.drawable.ic_taxi_top, - new MarkerViewManager.OnMarkerViewAddedListener() { - @Override - public void onViewAdded(@NonNull MarkerView markerView) { - // Make sure the car marker is selected so that it's always brought to the front (#5285) - mapboxMap.selectMarker(carMarker); - animateMoveToPassenger(carMarker); - } + markerView -> { + // Make sure the car marker is selected so that it's always brought to the front (#5285) + mapboxMap.selectMarker(carMarker); + animateMoveToPassenger(carMarker); }); markerViews.add(carMarker); } else { @@ -147,12 +135,7 @@ public class AnimatedMarkerActivity extends AppCompatActivity { protected void addRandomCar() { markerViews.add(createCarMarker(getLatLngInBounds(), R.drawable.ic_car_top, - new MarkerViewManager.OnMarkerViewAddedListener() { - @Override - public void onViewAdded(@NonNull MarkerView markerView) { - randomlyMoveMarker(markerView); - } - })); + markerView -> randomlyMoveMarker(markerView))); } private void randomlyMoveMarker(final MarkerView marker) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java index 666fd2eee6..afeb3b8979 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java @@ -5,7 +5,6 @@ import android.animation.AnimatorListenerAdapter; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.content.res.ResourcesCompat; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AppCompatActivity; @@ -17,30 +16,25 @@ import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; - import com.mapbox.mapboxsdk.annotations.Icon; -import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.utils.GeoParseUtil; import com.mapbox.mapboxsdk.testapp.utils.IconUtils; - -import org.json.JSONException; +import timber.log.Timber; import java.io.IOException; +import java.lang.ref.WeakReference; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Random; -import timber.log.Timber; - /** * Test activity showcasing adding a large amount of Markers or MarkerViews. */ @@ -50,6 +44,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView private MapView mapView; private boolean customMarkerView; private List<LatLng> locations; + private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -58,12 +53,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - BulkMarkerActivity.this.mapboxMap = mapboxMap; - } - }); + mapView.getMapAsync(mapboxMap -> BulkMarkerActivity.this.mapboxMap = mapboxMap); final View fab = findViewById(R.id.fab); if (fab != null) { @@ -88,6 +78,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { int amount = Integer.valueOf(getResources().getStringArray(R.array.bulk_marker_list)[position]); if (locations == null) { + progressDialog = ProgressDialog.show(this, "Loading", "Fetching markers", false); new LoadLocationTask(this, amount).execute(); } else { showMarkers(amount); @@ -95,6 +86,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView } private void onLatLngListLoaded(List<LatLng> latLngs, int amount) { + progressDialog.hide(); locations = latLngs; showMarkers(amount); } @@ -232,29 +224,22 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView viewCountView = (TextView) findViewById(R.id.countView); - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(@MapView.MapChange int change) { - if (change == MapView.REGION_IS_CHANGING || change == MapView.REGION_DID_CHANGE) { - if (!mapboxMap.getMarkerViewManager().getMarkerViewAdapters().isEmpty()) { - viewCountView.setText(String.format(Locale.getDefault(), "ViewCache size %d", - mapboxMap.getMarkerViewManager().getMarkerViewContainer().getChildCount())); - } + mapView.addOnMapChangedListener(change -> { + if (change == MapView.REGION_IS_CHANGING || change == MapView.REGION_DID_CHANGE) { + if (!mapboxMap.getMarkerViewManager().getMarkerViewAdapters().isEmpty()) { + viewCountView.setText(String.format(Locale.getDefault(), "ViewCache size %d", + mapboxMap.getMarkerViewManager().getMarkerViewContainer().getChildCount())); } } }); mapboxMap.getMarkerViewManager().setOnMarkerViewClickListener( - new MapboxMap.OnMarkerViewClickListener() { - @Override - public boolean onMarkerClick( - @NonNull Marker marker, @NonNull View view, @NonNull MapboxMap.MarkerViewAdapter adapter) { - Toast.makeText( - BulkMarkerActivity.this, - "Hello " + marker.getId(), - Toast.LENGTH_SHORT).show(); - return false; - } + (marker, view1, adapter) -> { + Toast.makeText( + BulkMarkerActivity.this, + "Hello " + marker.getId(), + Toast.LENGTH_SHORT).show(); + return false; }); } } @@ -262,32 +247,39 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView private static class LoadLocationTask extends AsyncTask<Void, Integer, List<LatLng>> { - private BulkMarkerActivity activity; - private ProgressDialog progressDialog; + private WeakReference<BulkMarkerActivity> activity; private int amount; private LoadLocationTask(BulkMarkerActivity activity, int amount) { this.amount = amount; - this.activity = activity; - progressDialog = ProgressDialog.show(activity, "Loading", "Fetching markers", false); + this.activity = new WeakReference<>(activity); } @Override protected List<LatLng> doInBackground(Void... params) { - try { - String json = GeoParseUtil.loadStringFromAssets(activity.getApplicationContext(), "points.geojson"); - return GeoParseUtil.parseGeoJsonCoordinates(json); - } catch (IOException | JSONException exception) { - Timber.e(exception, "Could not add markers"); - return null; + BulkMarkerActivity activity = this.activity.get(); + if (activity != null) { + String json = null; + try { + json = GeoParseUtil.loadStringFromAssets(activity.getApplicationContext(), "points.geojson"); + } catch (IOException exception) { + Timber.e(exception, "Could not add markers"); + } + + if (json != null) { + return GeoParseUtil.parseGeoJsonCoordinates(json); + } } + return null; } @Override protected void onPostExecute(List<LatLng> locations) { super.onPostExecute(locations); - activity.onLatLngListLoaded(locations, amount); - progressDialog.hide(); + BulkMarkerActivity activity = this.activity.get(); + if (activity != null) { + activity.onLatLngListLoaded(locations, amount); + } } } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java index f7ffc61a7d..1fe0340a55 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java @@ -1,19 +1,16 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; import android.support.v4.content.res.ResourcesCompat; import android.support.v7.app.AppCompatActivity; -import android.view.View; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.utils.IconUtils; @@ -37,29 +34,23 @@ public class DynamicMarkerChangeActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.setTag(false); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - DynamicMarkerChangeActivity.this.mapboxMap = mapboxMap; - // Create marker - MarkerOptions markerOptions = new MarkerOptions() - .position(LAT_LNG_CHELSEA) - .icon(IconUtils.drawableToIcon(DynamicMarkerChangeActivity.this, R.drawable.ic_stars, - ResourcesCompat.getColor(getResources(), R.color.blueAccent, getTheme()))) - .title(getString(R.string.dynamic_marker_chelsea_title)) - .snippet(getString(R.string.dynamic_marker_chelsea_snippet)); - marker = mapboxMap.addMarker(markerOptions); - } + mapView.getMapAsync(mapboxMap -> { + DynamicMarkerChangeActivity.this.mapboxMap = mapboxMap; + // Create marker + MarkerOptions markerOptions = new MarkerOptions() + .position(LAT_LNG_CHELSEA) + .icon(IconUtils.drawableToIcon(DynamicMarkerChangeActivity.this, R.drawable.ic_stars, + ResourcesCompat.getColor(getResources(), R.color.blueAccent, getTheme()))) + .title(getString(R.string.dynamic_marker_chelsea_title)) + .snippet(getString(R.string.dynamic_marker_chelsea_snippet)); + marker = mapboxMap.addMarker(markerOptions); }); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setColorFilter(ContextCompat.getColor(this, R.color.primary)); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - updateMarker(); - } + fab.setOnClickListener(view -> { + if (mapboxMap != null) { + updateMarker(); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java index 61ece0a94f..8c0dd69a0c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java @@ -29,7 +29,6 @@ import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerView; import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerViewOptions; @@ -81,127 +80,117 @@ public class MarkerViewActivity extends AppCompatActivity { final TextView viewCountView = (TextView) findViewById(R.id.countView); mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - MarkerViewActivity.this.mapboxMap = mapboxMap; - - final MarkerViewManager markerViewManager = mapboxMap.getMarkerViewManager(); - - Icon usFlag = IconFactory.getInstance(MarkerViewActivity.this) - .fromResource(R.drawable.ic_us); - - // add default ViewMarker markers - for (int i = 0; i < LAT_LNGS.length; i++) { - MarkerViewActivity.this.mapboxMap.addMarker(new MarkerViewOptions() - .position(LAT_LNGS[i]) - .title(String.valueOf(i)) - .alpha(0.5f) - .icon(usFlag) - ); - } - - // add custom ViewMarker - CountryMarkerViewOptions options = new CountryMarkerViewOptions(); - options.flagRes(R.drawable.icon_burned); - options.abbrevName("Mapbox"); - options.title("Hello"); - options.position(new LatLng(38.899774, -77.023237)); - options.flat(true); - MarkerView markerView = mapboxMap.addMarker(options); - - // Use object animator to rotate MarkerView - ValueAnimator markerAnimator = ObjectAnimator.ofObject(markerView, "rotation", new FloatEvaluator(), -90, 90); - markerAnimator.setDuration(5000); - markerAnimator.start(); - - MarkerViewActivity.this.mapboxMap.addMarker(new MarkerOptions() - .title("United States") - .position(new LatLng(38.902580, -77.050102)) - ); - - rotateMarker = MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() - .text("A") - .rotation(rotation = 270) - .position(new LatLng(38.889876, -77.008849)) - ); - loopMarkerRotate(); + mapView.getMapAsync(mapboxMap -> { + MarkerViewActivity.this.mapboxMap = mapboxMap; + final MarkerViewManager markerViewManager = mapboxMap.getMarkerViewManager(); - MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() - .text("B") - .position(new LatLng(38.907327, -77.041293)) - ); + Icon usFlag = IconFactory.getInstance(MarkerViewActivity.this) + .fromResource(R.drawable.ic_us); - MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() - .text("C") - .position(new LatLng(38.897642, -77.041980)) - ); - - // if you want to customise a ViewMarker you need to extend ViewMarker and provide an adapter implementation - // set adapters for child classes of ViewMarker - markerViewManager.addMarkerViewAdapter(new CountryAdapter(MarkerViewActivity.this, mapboxMap)); - markerViewManager.addMarkerViewAdapter(new TextAdapter(MarkerViewActivity.this, mapboxMap)); - - final ViewGroup markerViewContainer = markerViewManager.getMarkerViewContainer(); - - // add a change listener to validate the size of amount of child views - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(@MapView.MapChange int change) { - if (change == MapView.REGION_IS_CHANGING || change == MapView.REGION_DID_CHANGE) { - if (!markerViewManager.getMarkerViewAdapters().isEmpty() && viewCountView != null) { - viewCountView.setText(String.format( - Locale.getDefault(), - getString(R.string.viewcache_size), - markerViewContainer.getChildCount()) - ); - } - } - } - }); - - // add a OnMarkerView click listener - MarkerViewActivity.this.mapboxMap.getMarkerViewManager().setOnMarkerViewClickListener( - new MapboxMap.OnMarkerViewClickListener() { - @Override - public boolean onMarkerClick(@NonNull Marker marker, @NonNull View view, - @NonNull MapboxMap.MarkerViewAdapter adapter) { - Toast.makeText(MarkerViewActivity.this, "Hello " + marker.getId(), Toast.LENGTH_SHORT).show(); - return false; - } - }); - - movingMarkerOne = MarkerViewActivity.this.mapboxMap.addMarker(new MarkerViewOptions() - .position(CarLocation.CAR_0_LNGS[0]) - .icon(IconFactory.getInstance(mapView.getContext()) - .fromResource(R.drawable.ic_android)) + // add default ViewMarker markers + for (int i = 0; i < LAT_LNGS.length; i++) { + MarkerViewActivity.this.mapboxMap.addMarker(new MarkerViewOptions() + .position(LAT_LNGS[i]) + .title(String.valueOf(i)) + .alpha(0.5f) + .icon(usFlag) ); + } - movingMarkerTwo = mapboxMap.addMarker(new MarkerViewOptions() - .position(CarLocation.CAR_1_LNGS[0]) - .icon(IconFactory.getInstance(mapView.getContext()) - .fromResource(R.drawable.ic_android_2)) - ); + // add custom ViewMarker + CountryMarkerViewOptions options = new CountryMarkerViewOptions(); + options.flagRes(R.drawable.icon_burned); + options.abbrevName("Mapbox"); + options.title("Hello"); + options.position(new LatLng(38.899774, -77.023237)); + options.flat(true); + MarkerView markerView = mapboxMap.addMarker(options); + + // Use object animator to rotate MarkerView + ValueAnimator markerAnimator = ObjectAnimator.ofObject(markerView, "rotation", new FloatEvaluator(), -90, 90); + markerAnimator.setDuration(5000); + markerAnimator.start(); + + MarkerViewActivity.this.mapboxMap.addMarker(new MarkerOptions() + .title("United States") + .position(new LatLng(38.902580, -77.050102)) + ); + + rotateMarker = MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() + .text("A") + .rotation(rotation = 270) + .position(new LatLng(38.889876, -77.008849)) + ); + loopMarkerRotate(); - // allow more open infowindows at the same time - mapboxMap.setAllowConcurrentMultipleOpenInfoWindows(true); - // add offscreen markers - Marker markerRightOffScreen = mapboxMap.addMarker(new MarkerOptions() - .setPosition(new LatLng(38.892846, -76.909399)) - .title("InfoWindow") - .snippet("Offscreen, to the right of the Map.")); + MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() + .text("B") + .position(new LatLng(38.907327, -77.041293)) + ); + + MarkerViewActivity.this.mapboxMap.addMarker(new TextMarkerViewOptions() + .text("C") + .position(new LatLng(38.897642, -77.041980)) + ); + + // if you want to customise a ViewMarker you need to extend ViewMarker and provide an adapter implementation + // set adapters for child classes of ViewMarker + markerViewManager.addMarkerViewAdapter(new CountryAdapter(MarkerViewActivity.this, mapboxMap)); + markerViewManager.addMarkerViewAdapter(new TextAdapter(MarkerViewActivity.this, mapboxMap)); + + final ViewGroup markerViewContainer = markerViewManager.getMarkerViewContainer(); + + // add a change listener to validate the size of amount of child views + mapView.addOnMapChangedListener(change -> { + if (change == MapView.REGION_IS_CHANGING || change == MapView.REGION_DID_CHANGE) { + if (!markerViewManager.getMarkerViewAdapters().isEmpty() && viewCountView != null) { + viewCountView.setText(String.format( + Locale.getDefault(), + getString(R.string.viewcache_size), + markerViewContainer.getChildCount()) + ); + } + } + }); - Marker markerRightBottomOffScreen = mapboxMap.addMarker(new MarkerOptions() - .setPosition(new LatLng(38.791645, -77.039006)) - .title("InfoWindow") - .snippet("Offscreen, to the bottom of the Map")); + // add a OnMarkerView click listener + MarkerViewActivity.this.mapboxMap.getMarkerViewManager().setOnMarkerViewClickListener( + (marker, view, adapter) -> { + Toast.makeText(MarkerViewActivity.this, "Hello " + marker.getId(), Toast.LENGTH_SHORT).show(); + return false; + }); - // open infowindow offscreen markers - mapboxMap.selectMarker(markerRightOffScreen); - mapboxMap.selectMarker(markerRightBottomOffScreen); - } + movingMarkerOne = MarkerViewActivity.this.mapboxMap.addMarker(new MarkerViewOptions() + .position(CarLocation.CAR_0_LNGS[0]) + .icon(IconFactory.getInstance(mapView.getContext()) + .fromResource(R.drawable.ic_android)) + ); + + movingMarkerTwo = mapboxMap.addMarker(new MarkerViewOptions() + .position(CarLocation.CAR_1_LNGS[0]) + .icon(IconFactory.getInstance(mapView.getContext()) + .fromResource(R.drawable.ic_android_2)) + ); + + // allow more open infowindows at the same time + mapboxMap.setAllowConcurrentMultipleOpenInfoWindows(true); + + // add offscreen markers + Marker markerRightOffScreen = mapboxMap.addMarker(new MarkerOptions() + .setPosition(new LatLng(38.892846, -76.909399)) + .title("InfoWindow") + .snippet("Offscreen, to the right of the Map.")); + + Marker markerRightBottomOffScreen = mapboxMap.addMarker(new MarkerOptions() + .setPosition(new LatLng(38.791645, -77.039006)) + .title("InfoWindow") + .snippet("Offscreen, to the bottom of the Map")); + + // open infowindow offscreen markers + mapboxMap.selectMarker(markerRightOffScreen); + mapboxMap.selectMarker(markerRightBottomOffScreen); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java index 49c9663672..93f2e9c98f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; @@ -78,16 +77,11 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall public void onMapReady(MapboxMap map) { mapboxMap = map; - map.setOnPolygonClickListener(new MapboxMap.OnPolygonClickListener() { - @Override - public void onPolygonClick(@NonNull Polygon polygon) { - Toast.makeText( - PolygonActivity.this, - "You clicked on polygon with id = " + polygon.getId(), - Toast.LENGTH_SHORT - ).show(); - } - }); + map.setOnPolygonClickListener(polygon -> Toast.makeText( + PolygonActivity.this, + "You clicked on polygon with id = " + polygon.getId(), + Toast.LENGTH_SHORT + ).show()); polygon = mapboxMap.addPolygon(new PolygonOptions() .addAll(STAR_SHAPE_POINTS) diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java index b9dc39e5d4..fbf439448f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; @@ -14,7 +13,6 @@ import com.mapbox.mapboxsdk.annotations.PolylineOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import java.util.ArrayList; @@ -65,46 +63,35 @@ public class PolylineActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap mapboxMap) { - PolylineActivity.this.mapboxMap = mapboxMap; - - mapboxMap.setOnPolylineClickListener(new MapboxMap.OnPolylineClickListener() { - @Override - public void onPolylineClick(@NonNull Polyline polyline) { - Toast.makeText( - PolylineActivity.this, - "You clicked on polygon with id = " + polyline.getId(), - Toast.LENGTH_SHORT - ).show(); - } - }); + mapView.getMapAsync(mapboxMap -> { + PolylineActivity.this.mapboxMap = mapboxMap; - polylines = mapboxMap.addPolylines(polylineOptions); - } + mapboxMap.setOnPolylineClickListener(polyline -> Toast.makeText( + PolylineActivity.this, + "You clicked on polygon with id = " + polyline.getId(), + Toast.LENGTH_SHORT + ).show()); + + polylines = mapboxMap.addPolylines(polylineOptions); }); View fab = findViewById(R.id.fab); if (fab != null) { - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - if (polylines != null && polylines.size() > 0) { - if (polylines.size() == 1) { - // test for removing annotation - mapboxMap.removeAnnotation(polylines.get(0)); - } else { - // test for removing annotations - mapboxMap.removeAnnotations(polylines); - } + fab.setOnClickListener(view -> { + if (mapboxMap != null) { + if (polylines != null && polylines.size() > 0) { + if (polylines.size() == 1) { + // test for removing annotation + mapboxMap.removeAnnotation(polylines.get(0)); + } else { + // test for removing annotations + mapboxMap.removeAnnotations(polylines); } - polylineOptions.clear(); - polylineOptions.addAll(getRandomLine()); - polylines = mapboxMap.addPolylines(polylineOptions); - } + polylineOptions.clear(); + polylineOptions.addAll(getRandomLine()); + polylines = mapboxMap.addPolylines(polylineOptions); + } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java index 7cfe35f160..29c0ae0fca 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.graphics.PointF; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.Menu; @@ -12,7 +11,6 @@ import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import java.text.DecimalFormat; @@ -41,30 +39,17 @@ public class PressForMarkerActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(final MapboxMap map) { - mapboxMap = map; - resetMap(); + mapView.getMapAsync(map -> { + mapboxMap = map; + resetMap(); + + mapboxMap.setOnMapLongClickListener(point -> addMarker(point)); + + mapboxMap.setOnMapClickListener(point -> addMarker(point)); - mapboxMap.setOnMapLongClickListener(new MapboxMap.OnMapLongClickListener() { - @Override - public void onMapLongClick(@NonNull LatLng point) { - addMarker(point); - } - }); - - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - addMarker(point); - } - }); - - if (savedInstanceState != null) { - markerList = savedInstanceState.getParcelableArrayList(STATE_MARKER_LIST); - mapboxMap.addMarkers(markerList); - } + if (savedInstanceState != null) { + markerList = savedInstanceState.getParcelableArrayList(STATE_MARKER_LIST); + mapboxMap.addMarkers(markerList); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java index 030785565e..14997b768b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java @@ -47,102 +47,88 @@ public class CameraAnimationTypeActivity extends AppCompatActivity implements On mapboxMap = map; mapboxMap.getUiSettings().setAttributionEnabled(false); mapboxMap.getUiSettings().setLogoEnabled(false); - mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { - @Override - public void onCameraChange(CameraPosition position) { - Timber.w(position.toString()); - } - }); + mapboxMap.setOnCameraChangeListener(position -> Timber.w(position.toString())); // handle move button clicks View moveButton = findViewById(R.id.cameraMoveButton); if (moveButton != null) { - moveButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - CameraPosition cameraPosition = new CameraPosition.Builder() - .target(getNextLatLng()) - .zoom(14) - .tilt(30) - .tilt(0) - .build(); - mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); - } + moveButton.setOnClickListener(view -> { + CameraPosition cameraPosition = new CameraPosition.Builder() + .target(getNextLatLng()) + .zoom(14) + .tilt(30) + .tilt(0) + .build(); + mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); }); } // handle ease button clicks View easeButton = findViewById(R.id.cameraEaseButton); if (easeButton != null) { - easeButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - CameraPosition cameraPosition = new CameraPosition.Builder() - .target(getNextLatLng()) - .zoom(15) - .bearing(180) - .tilt(30) - .build(); - - MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() { - @Override - public void onCancel() { - Timber.i("Duration onCancel Callback called."); - Toast.makeText( - CameraAnimationTypeActivity.this, - "Ease onCancel Callback called.", - Toast.LENGTH_LONG).show(); - } - - @Override - public void onFinish() { - Timber.i("Duration onFinish Callback called."); - Toast.makeText( - CameraAnimationTypeActivity.this, - "Ease onFinish Callback called.", - Toast.LENGTH_LONG).show(); - } - }; - - mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), 7500, callback); - } + easeButton.setOnClickListener(view -> { + CameraPosition cameraPosition = new CameraPosition.Builder() + .target(getNextLatLng()) + .zoom(15) + .bearing(180) + .tilt(30) + .build(); + + MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() { + @Override + public void onCancel() { + Timber.i("Duration onCancel Callback called."); + Toast.makeText( + CameraAnimationTypeActivity.this, + "Ease onCancel Callback called.", + Toast.LENGTH_LONG).show(); + } + + @Override + public void onFinish() { + Timber.i("Duration onFinish Callback called."); + Toast.makeText( + CameraAnimationTypeActivity.this, + "Ease onFinish Callback called.", + Toast.LENGTH_LONG).show(); + } + }; + + mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), 7500, callback); }); } // handle animate button clicks View animateButton = findViewById(R.id.cameraAnimateButton); if (animateButton != null) { - animateButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - CameraPosition cameraPosition = new CameraPosition.Builder() - .target(getNextLatLng()) - .bearing(270) - .tilt(20) - .build(); - - MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() { - @Override - public void onCancel() { - Timber.i("Duration onCancel Callback called."); - Toast.makeText( - CameraAnimationTypeActivity.this, - "Duration onCancel Callback called.", - Toast.LENGTH_LONG).show(); - } - - @Override - public void onFinish() { - Timber.i("Duration onFinish Callback called."); - Toast.makeText( - CameraAnimationTypeActivity.this, - "Duration onFinish Callback called.", - Toast.LENGTH_LONG).show(); - } - }; - - mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), 7500, callback); - } + animateButton.setOnClickListener(view -> { + CameraPosition cameraPosition = new CameraPosition.Builder() + .target(getNextLatLng()) + .bearing(270) + .tilt(20) + .build(); + + MapboxMap.CancelableCallback callback = new MapboxMap.CancelableCallback() { + @Override + public void onCancel() { + Timber.i("Duration onCancel Callback called."); + Toast.makeText( + CameraAnimationTypeActivity.this, + "Duration onCancel Callback called.", + Toast.LENGTH_LONG).show(); + } + + @Override + public void onFinish() { + Timber.i("Duration onFinish Callback called."); + Toast.makeText( + CameraAnimationTypeActivity.this, + "Duration onFinish Callback called.", + Toast.LENGTH_LONG).show(); + } + }; + + mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), 7500, callback); }); } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java index c8c5c6bd37..f25fd6ab27 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimatorActivity.java @@ -35,44 +35,30 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe private final LongSparseArray<AnimatorBuilder> animators = new LongSparseArray<AnimatorBuilder>() { { - put(R.id.menu_action_accelerate_decelerate_interpolator, new AnimatorBuilder() { - @Override - public Animator build() { - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether( - createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)), - obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500) - ); - return animatorSet; - } + put(R.id.menu_action_accelerate_decelerate_interpolator, () -> { + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether( + createLatLngAnimator(START_LAT_LNG, new LatLng(37.826715, -122.422795)), + obtainExampleInterpolator(new FastOutSlowInInterpolator(), 2500) + ); + return animatorSet; }); - put(R.id.menu_action_bounce_interpolator, new AnimatorBuilder() { - @Override - public Animator build() { - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.playTogether( - createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)), - obtainExampleInterpolator(new BounceInterpolator(), 3750) - ); - return animatorSet; - } + put(R.id.menu_action_bounce_interpolator, () -> { + AnimatorSet animatorSet = new AnimatorSet(); + animatorSet.playTogether( + createLatLngAnimator(START_LAT_LNG, new LatLng(37.787947, -122.407432)), + obtainExampleInterpolator(new BounceInterpolator(), 3750) + ); + return animatorSet; }); - put(R.id.menu_action_anticipate_overshoot_interpolator, new AnimatorBuilder() { - @Override - public Animator build() { - return obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500); - } - }); + put(R.id.menu_action_anticipate_overshoot_interpolator, () -> + obtainExampleInterpolator(new AnticipateOvershootInterpolator(), 2500) + ); - put(R.id.menu_action_path_interpolator, new AnimatorBuilder() { - @Override - public Animator build() { - return obtainExampleInterpolator( - PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500); - } - }); + put(R.id.menu_action_path_interpolator, () -> obtainExampleInterpolator( + PathInterpolatorCompat.create(.22f, .68f, 0, 1.71f), 2500)); } }; @@ -98,20 +84,17 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe } private void initFab() { - findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - view.setVisibility(View.GONE); - - CameraPosition animatedPosition = new CameraPosition.Builder() - .target(new LatLng(37.789992, -122.402214)) - .tilt(60) - .zoom(14.5f) - .bearing(135) - .build(); - - createExampleAnimator(mapboxMap.getCameraPosition(), animatedPosition).start(); - } + findViewById(R.id.fab).setOnClickListener(view -> { + view.setVisibility(View.GONE); + + CameraPosition animatedPosition = new CameraPosition.Builder() + .target(new LatLng(37.789992, -122.402214)) + .tilt(60) + .zoom(14.5f) + .bearing(135) + .build(); + + createExampleAnimator(mapboxMap.getCameraPosition(), animatedPosition).start(); }); } @@ -132,12 +115,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe ValueAnimator latLngAnimator = ValueAnimator.ofObject(new LatLngEvaluator(), currentPosition, targetPosition); latLngAnimator.setDuration((long) (1000 * ANIMATION_DELAY_FACTOR)); latLngAnimator.setInterpolator(new FastOutSlowInInterpolator()); - latLngAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.setLatLng((LatLng) animation.getAnimatedValue()); - } - }); + latLngAnimator.addUpdateListener(animation -> mapboxMap.setLatLng((LatLng) animation.getAnimatedValue())); return latLngAnimator; } @@ -146,12 +124,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe zoomAnimator.setDuration((long) (2200 * ANIMATION_DELAY_FACTOR)); zoomAnimator.setStartDelay((long) (600 * ANIMATION_DELAY_FACTOR)); zoomAnimator.setInterpolator(new AnticipateOvershootInterpolator()); - zoomAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.setZoom((Float) animation.getAnimatedValue()); - } - }); + zoomAnimator.addUpdateListener(animation -> mapboxMap.setZoom((Float) animation.getAnimatedValue())); return zoomAnimator; } @@ -160,12 +133,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe bearingAnimator.setDuration((long) (1000 * ANIMATION_DELAY_FACTOR)); bearingAnimator.setStartDelay((long) (1000 * ANIMATION_DELAY_FACTOR)); bearingAnimator.setInterpolator(new FastOutLinearInInterpolator()); - bearingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.setBearing((Float) animation.getAnimatedValue()); - } - }); + bearingAnimator.addUpdateListener(animation -> mapboxMap.setBearing((Float) animation.getAnimatedValue())); return bearingAnimator; } @@ -173,12 +141,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe ValueAnimator tiltAnimator = ValueAnimator.ofFloat((float) currentTilt, (float) targetTilt); tiltAnimator.setDuration((long) (1000 * ANIMATION_DELAY_FACTOR)); tiltAnimator.setStartDelay((long) (1500 * ANIMATION_DELAY_FACTOR)); - tiltAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.setTilt((Float) animation.getAnimatedValue()); - } - }); + tiltAnimator.addUpdateListener(animation -> mapboxMap.setTilt((Float) animation.getAnimatedValue())); return tiltAnimator; } @@ -229,12 +192,7 @@ public class CameraAnimatorActivity extends AppCompatActivity implements OnMapRe ValueAnimator zoomAnimator = ValueAnimator.ofFloat(11.0f, 16.0f); zoomAnimator.setDuration((long) (duration * ANIMATION_DELAY_FACTOR)); zoomAnimator.setInterpolator(interpolator); - zoomAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.setZoom((Float) animation.getAnimatedValue()); - } - }); + zoomAnimator.addUpdateListener(animation -> mapboxMap.setZoom((Float) animation.getAnimatedValue())); return zoomAnimator; } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java index e5c6a3f584..42711a4379 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java @@ -162,13 +162,7 @@ public class CameraPositionActivity extends AppCompatActivity implements OnMapRe } }; - private MapboxMap.OnCameraMoveCanceledListener moveCanceledListener = new MapboxMap.OnCameraMoveCanceledListener() { - @Override - public void onCameraMoveCanceled() { - Timber.e("OnCameraMoveCanceled"); - - } - }; + private MapboxMap.OnCameraMoveCanceledListener moveCanceledListener = () -> Timber.e("OnCameraMoveCanceled"); private MapboxMap.OnCameraMoveStartedListener moveStartedListener = new MapboxMap.OnCameraMoveStartedListener() { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java index e3a9551b8e..686f564c5c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java @@ -12,7 +12,6 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.view.LockableBottomSheetBehavior; @@ -55,12 +54,9 @@ public class LatLngBoundsActivity extends AppCompatActivity implements View.OnCl setContentView(R.layout.activity_latlngbounds); mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(final MapboxMap map) { - mapboxMap = map; - initMap(); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + initMap(); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java index b999572436..716d0463a5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.graphics.Point; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; @@ -12,7 +11,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.UiSettings; import com.mapbox.mapboxsdk.testapp.R; @@ -35,14 +33,11 @@ public class ManualZoomActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.setStyleUrl(Style.SATELLITE); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap mapboxMap) { - ManualZoomActivity.this.mapboxMap = mapboxMap; - - UiSettings uiSettings = ManualZoomActivity.this.mapboxMap.getUiSettings(); - uiSettings.setAllGesturesEnabled(false); - } + mapView.getMapAsync(mapboxMap -> { + ManualZoomActivity.this.mapboxMap = mapboxMap; + + UiSettings uiSettings = ManualZoomActivity.this.mapboxMap.getUiSettings(); + uiSettings.setAllGesturesEnabled(false); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java index 53a5800f26..277eadb1b5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java @@ -1,11 +1,9 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.constants.Style; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; @@ -37,17 +35,7 @@ public class MaxMinZoomActivity extends AppCompatActivity implements OnMapReadyC mapboxMap = map; mapboxMap.setMinZoomPreference(3); mapboxMap.setMaxZoomPreference(5); - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - map.setStyle(Style.OUTDOORS, new MapboxMap.OnStyleLoadedListener() { - @Override - public void onStyleLoaded(String style) { - Timber.d("Style Loaded %s", style); - } - }); - } - }); + mapboxMap.setOnMapClickListener(point -> map.setStyle(Style.OUTDOORS, style -> Timber.d("Style Loaded %s", style))); } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ScrollByActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ScrollByActivity.java index 2e889f6e11..4906559935 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ScrollByActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ScrollByActivity.java @@ -9,7 +9,6 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; -import android.view.View; import android.widget.SeekBar; import android.widget.TextView; @@ -69,15 +68,10 @@ public class ScrollByActivity extends AppCompatActivity implements OnMapReadyCal FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setColorFilter(ContextCompat.getColor(ScrollByActivity.this, R.color.primary)); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - mapboxMap.easeCamera(CameraUpdateFactory.scrollBy( - seekBarX.getProgress() * MULTIPLIER_PER_PIXEL, - seekBarY.getProgress() * MULTIPLIER_PER_PIXEL) - ); - } - }); + fab.setOnClickListener(view -> mapboxMap.easeCamera(CameraUpdateFactory.scrollBy( + seekBarX.getProgress() * MULTIPLIER_PER_PIXEL, + seekBarY.getProgress() * MULTIPLIER_PER_PIXEL) + )); } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java index 1b49e9e3d6..4cad7593ef 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java @@ -6,13 +6,11 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.CustomLayer; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.model.customlayer.ExampleCustomLayer; @@ -38,23 +36,17 @@ public class CustomLayerActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(39.91448, -243.60947), 10)); + mapView.getMapAsync(map -> { + mapboxMap = map; + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(39.91448, -243.60947), 10)); - } }); fab = (FloatingActionButton) findViewById(R.id.fab); fab.setColorFilter(ContextCompat.getColor(this, R.color.primary)); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - swapCustomLayer(); - } + fab.setOnClickListener(view -> { + if (mapboxMap != null) { + swapCustomLayer(); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java index 20174daeaa..70d5b53428 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java @@ -9,7 +9,6 @@ import android.widget.Toast; import com.google.gson.JsonElement; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.services.commons.geojson.Feature; @@ -36,32 +35,25 @@ public class QueryRenderedFeaturesBoxCountActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @SuppressWarnings("ConstantConditions") - @Override - public void onMapReady(final MapboxMap mapboxMap) { - QueryRenderedFeaturesBoxCountActivity.this.mapboxMap = mapboxMap; - selectionBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - // Query - int top = selectionBox.getTop() - mapView.getTop(); - int left = selectionBox.getLeft() - mapView.getLeft(); - RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); - Timber.i("Querying box %s", box); - List<Feature> features = mapboxMap.queryRenderedFeatures(box); - - // Show count - Toast.makeText( - QueryRenderedFeaturesBoxCountActivity.this, - String.format("%s features in box", features.size()), - Toast.LENGTH_SHORT).show(); - - // Debug output - debugOutput(features); - } - }); - } + mapView.getMapAsync(mapboxMap -> { + QueryRenderedFeaturesBoxCountActivity.this.mapboxMap = mapboxMap; + selectionBox.setOnClickListener(view -> { + // Query + int top = selectionBox.getTop() - mapView.getTop(); + int left = selectionBox.getLeft() - mapView.getLeft(); + RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); + Timber.i("Querying box %s", box); + List<Feature> features = mapboxMap.queryRenderedFeatures(box); + + // Show count + Toast.makeText( + QueryRenderedFeaturesBoxCountActivity.this, + String.format("%s features in box", features.size()), + Toast.LENGTH_SHORT).show(); + + // Debug output + debugOutput(features); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java index 480e48437a..8c9d056764 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java @@ -9,7 +9,6 @@ import android.widget.Toast; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.FillLayer; import com.mapbox.mapboxsdk.style.layers.Filter; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; @@ -41,41 +40,34 @@ public class QueryRenderedFeaturesBoxHighlightActivity extends AppCompatActivity // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @SuppressWarnings("ConstantConditions") - @Override - public void onMapReady(final MapboxMap mapboxMap) { - QueryRenderedFeaturesBoxHighlightActivity.this.mapboxMap = mapboxMap; - - // Add layer / source - final GeoJsonSource source = new GeoJsonSource("highlighted-shapes-source"); - mapboxMap.addSource(source); - mapboxMap.addLayer( - new FillLayer("highlighted-shapes-layer", "highlighted-shapes-source") - .withProperties(fillColor(Color.RED)) - ); - - selectionBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - // Query - int top = selectionBox.getTop() - mapView.getTop(); - int left = selectionBox.getLeft() - mapView.getLeft(); - RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); - Timber.i("Querying box %s for buildings", box); - List<Feature> features = mapboxMap.queryRenderedFeatures(box, Filter.lt("height", 10), "building"); - - // Show count - Toast.makeText( - QueryRenderedFeaturesBoxHighlightActivity.this, - String.format("%s features in box", features.size()), - Toast.LENGTH_SHORT).show(); - - // Update source data - source.setGeoJson(FeatureCollection.fromFeatures(features)); - } - }); - } + mapView.getMapAsync(mapboxMap -> { + QueryRenderedFeaturesBoxHighlightActivity.this.mapboxMap = mapboxMap; + + // Add layer / source + final GeoJsonSource source = new GeoJsonSource("highlighted-shapes-source"); + mapboxMap.addSource(source); + mapboxMap.addLayer( + new FillLayer("highlighted-shapes-layer", "highlighted-shapes-source") + .withProperties(fillColor(Color.RED)) + ); + + selectionBox.setOnClickListener(view -> { + // Query + int top = selectionBox.getTop() - mapView.getTop(); + int left = selectionBox.getLeft() - mapView.getLeft(); + RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); + Timber.i("Querying box %s for buildings", box); + List<Feature> features = mapboxMap.queryRenderedFeatures(box, Filter.lt("height", 10), "building"); + + // Show count + Toast.makeText( + QueryRenderedFeaturesBoxHighlightActivity.this, + String.format("%s features in box", features.size()), + Toast.LENGTH_SHORT).show(); + + // Update source data + source.setGeoJson(FeatureCollection.fromFeatures(features)); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java index 220137d07d..9bad5f3e62 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java @@ -9,7 +9,6 @@ import android.widget.Toast; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.testapp.R; @@ -43,49 +42,42 @@ public class QueryRenderedFeaturesBoxSymbolCountActivity extends AppCompatActivi // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @SuppressWarnings("ConstantConditions") - @Override - public void onMapReady(final MapboxMap mapboxMap) { - QueryRenderedFeaturesBoxSymbolCountActivity.this.mapboxMap = mapboxMap; - - // Add a symbol layer (also works with annotations) - try { - mapboxMap.addSource(new GeoJsonSource("symbols-source", ResourceUtils.readRawResource( - QueryRenderedFeaturesBoxSymbolCountActivity.this, R.raw.test_points_utrecht))); - } catch (IOException ioException) { - Timber.e(ioException, "Could not load geojson"); - return; - } - mapboxMap.addImage( - "test-icon", - BitmapFactory.decodeResource(getResources(), - R.drawable.mapbox_marker_icon_default) - ); - mapboxMap.addLayer(new SymbolLayer("symbols-layer", "symbols-source").withProperties(iconImage("test-icon"))); - - selectionBox.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - // Query - int top = selectionBox.getTop() - mapView.getTop(); - int left = selectionBox.getLeft() - mapView.getLeft(); - RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); - Timber.i("Querying box %s", box); - List<Feature> features = mapboxMap.queryRenderedFeatures(box, "symbols-layer"); - - // Show count - if (toast != null) { - toast.cancel(); - } - toast = Toast.makeText( - QueryRenderedFeaturesBoxSymbolCountActivity.this, - String.format("%s features in box", features.size()), - Toast.LENGTH_SHORT); - toast.show(); - } - }); + mapView.getMapAsync(mapboxMap -> { + QueryRenderedFeaturesBoxSymbolCountActivity.this.mapboxMap = mapboxMap; + + // Add a symbol layer (also works with annotations) + try { + mapboxMap.addSource(new GeoJsonSource("symbols-source", ResourceUtils.readRawResource( + QueryRenderedFeaturesBoxSymbolCountActivity.this, R.raw.test_points_utrecht))); + } catch (IOException ioException) { + Timber.e(ioException, "Could not load geojson"); + return; } + mapboxMap.addImage( + "test-icon", + BitmapFactory.decodeResource(getResources(), + R.drawable.mapbox_marker_icon_default) + ); + mapboxMap.addLayer(new SymbolLayer("symbols-layer", "symbols-source").withProperties(iconImage("test-icon"))); + + selectionBox.setOnClickListener(view -> { + // Query + int top = selectionBox.getTop() - mapView.getTop(); + int left = selectionBox.getLeft() - mapView.getLeft(); + RectF box = new RectF(left, top, left + selectionBox.getWidth(), top + selectionBox.getHeight()); + Timber.i("Querying box %s", box); + List<Feature> features = mapboxMap.queryRenderedFeatures(box, "symbols-layer"); + + // Show count + if (toast != null) { + toast.cancel(); + } + toast = Toast.makeText( + QueryRenderedFeaturesBoxSymbolCountActivity.this, + String.format("%s features in box", features.size()), + Toast.LENGTH_SHORT); + toast.show(); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java index 1bd6a34b7c..150b081f7f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java @@ -14,10 +14,8 @@ import android.widget.TextView; import com.google.gson.JsonElement; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.services.commons.geojson.Feature; @@ -45,40 +43,34 @@ public class QueryRenderedFeaturesPropertiesActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(final MapboxMap mapboxMap) { - QueryRenderedFeaturesPropertiesActivity.this.mapboxMap = mapboxMap; - - // Add custom window adapter - addCustomInfoWindowAdapter(mapboxMap); - - // Add a click listener - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - // Query - final PointF pixel = mapboxMap.getProjection().toScreenLocation(point); - Timber.i( - "Requesting features for %sx%s (%sx%s adjusted for density)", - pixel.x, pixel.y, pixel.x / density, pixel.y / density - ); - List<Feature> features = mapboxMap.queryRenderedFeatures(pixel); - - // Debug output - debugOutput(features); - - // Remove any previous markers - if (marker != null) { - mapboxMap.removeMarker(marker); - } - - // Add a marker on the clicked point - marker = mapboxMap.addMarker(new CustomMarkerOptions().position(point).features(features)); - mapboxMap.selectMarker(marker); - } - }); - } + mapView.getMapAsync(mapboxMap -> { + QueryRenderedFeaturesPropertiesActivity.this.mapboxMap = mapboxMap; + + // Add custom window adapter + addCustomInfoWindowAdapter(mapboxMap); + + // Add a click listener + mapboxMap.setOnMapClickListener(point -> { + // Query + final PointF pixel = mapboxMap.getProjection().toScreenLocation(point); + Timber.i( + "Requesting features for %sx%s (%sx%s adjusted for density)", + pixel.x, pixel.y, pixel.x / density, pixel.y / density + ); + List<Feature> features = mapboxMap.queryRenderedFeatures(pixel); + + // Debug output + debugOutput(features); + + // Remove any previous markers + if (marker != null) { + mapboxMap.removeMarker(marker); + } + + // Add a marker on the clicked point + marker = mapboxMap.addMarker(new CustomMarkerOptions().position(point).features(features)); + mapboxMap.selectMarker(marker); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QuerySourceFeaturesActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QuerySourceFeaturesActivity.java index 861f2fef34..c8bef26856 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QuerySourceFeaturesActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QuerySourceFeaturesActivity.java @@ -1,15 +1,12 @@ package com.mapbox.mapboxsdk.testapp.activity.feature; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.google.gson.JsonObject; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.CircleLayer; import com.mapbox.mapboxsdk.style.layers.Filter; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; @@ -38,32 +35,26 @@ public class QuerySourceFeaturesActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(final MapboxMap mapboxMap) { - QuerySourceFeaturesActivity.this.mapboxMap = mapboxMap; - - JsonObject properties = new JsonObject(); - properties.addProperty("key1", "value1"); - final GeoJsonSource source = new GeoJsonSource("test-source", - FeatureCollection.fromFeatures(new Feature[] { - Feature.fromGeometry(Point.fromCoordinates(new double[] {0, 0}), properties) - })); - mapboxMap.addSource(source); - - mapboxMap.addLayer(new CircleLayer("test-layer", source.getId()).withFilter(Filter.neq("key1", "value1"))); - - // Add a click listener - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - // Query - List<Feature> features = source.querySourceFeatures(Filter.eq("key1", "value1")); - Toast.makeText(QuerySourceFeaturesActivity.this, String.format("Found %s features", - features.size()), Toast.LENGTH_SHORT).show(); - } - }); - } + mapView.getMapAsync(mapboxMap -> { + QuerySourceFeaturesActivity.this.mapboxMap = mapboxMap; + + JsonObject properties = new JsonObject(); + properties.addProperty("key1", "value1"); + final GeoJsonSource source = new GeoJsonSource("test-source", + FeatureCollection.fromFeatures(new Feature[] { + Feature.fromGeometry(Point.fromCoordinates(new double[] {0, 0}), properties) + })); + mapboxMap.addSource(source); + + mapboxMap.addLayer(new CircleLayer("test-layer", source.getId()).withFilter(Filter.neq("key1", "value1"))); + + // Add a click listener + mapboxMap.setOnMapClickListener(point -> { + // Query + List<Feature> features = source.querySourceFeatures(Filter.eq("key1", "value1")); + Toast.makeText(QuerySourceFeaturesActivity.this, String.format("Found %s features", + features.size()), Toast.LENGTH_SHORT).show(); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MultiMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MultiMapActivity.java index eec440afb0..2305fdf16c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MultiMapActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MultiMapActivity.java @@ -1,7 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.fragment; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.testapp.R; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java index bbdf450505..26cf777ba9 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java @@ -48,6 +48,7 @@ public class ViewPagerActivity extends AppCompatActivity { public Fragment getItem(int position) { SupportMapFragment fragment = null; MapboxMapOptions options = new MapboxMapOptions(); + options.textureMode(true); switch (position) { case 0: diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java index 18d80586c9..d0d4368d36 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java @@ -2,14 +2,12 @@ package com.mapbox.mapboxsdk.testapp.activity.imagegenerator; import android.graphics.Bitmap; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.print.PrintHelper; import android.support.v7.app.AppCompatActivity; import android.view.View; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -27,21 +25,13 @@ public class PrintActivity extends AppCompatActivity implements MapboxMap.Snapsh mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - PrintActivity.this.mapboxMap = mapboxMap; - } - }); + mapView.getMapAsync(mapboxMap -> PrintActivity.this.mapboxMap = mapboxMap); final View fab = findViewById(R.id.fab); if (fab != null) { - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - mapboxMap.snapshot(PrintActivity.this); - } + fab.setOnClickListener(view -> { + if (mapboxMap != null) { + mapboxMap.snapshot(PrintActivity.this); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java index 655012f799..62d3ad34df 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java @@ -1,6 +1,5 @@ package com.mapbox.mapboxsdk.testapp.activity.imagegenerator; -import android.graphics.Bitmap; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; @@ -49,18 +48,15 @@ public class SnapshotActivity extends AppCompatActivity implements OnMapReadyCal @Override public void onClick(View view) { final long startTime = System.nanoTime(); - mapboxMap.snapshot(new MapboxMap.SnapshotReadyCallback() { - @Override - public void onSnapshotReady(Bitmap snapshot) { - long endTime = System.nanoTime(); - long duration = (long) ((endTime - startTime) / 1e6); - ImageView snapshotView = (ImageView) findViewById(R.id.imageView); - snapshotView.setImageBitmap(snapshot); - Toast.makeText( - SnapshotActivity.this, - String.format(Locale.getDefault(), "Snapshot taken in %d ms", duration), - Toast.LENGTH_LONG).show(); - } + mapboxMap.snapshot(snapshot -> { + long endTime = System.nanoTime(); + long duration = (long) ((endTime - startTime) / 1e6); + ImageView snapshotView = (ImageView) findViewById(R.id.imageView); + snapshotView.setImageBitmap(snapshot); + Toast.makeText( + SnapshotActivity.this, + String.format(Locale.getDefault(), "Snapshot taken in %d ms", duration), + Toast.LENGTH_LONG).show(); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java index 7fa4792a38..9dea4f77de 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java @@ -2,14 +2,11 @@ package com.mapbox.mapboxsdk.testapp.activity.infowindow; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.content.res.ResourcesCompat; import android.support.v7.app.AppCompatActivity; -import android.view.View; import android.widget.TextView; import com.mapbox.mapboxsdk.annotations.InfoWindow; -import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerView; import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -57,28 +54,22 @@ public class DynamicInfoWindowAdapterActivity extends AppCompatActivity implemen mapboxMap.selectMarker(marker); // On map click, change the info window contents - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - // Distance from click to marker - double distanceKm = marker.getPosition().distanceTo(point) / 1000; - - // Get the info window - final InfoWindow infoWindow = marker.getInfoWindow(); - - // Get the view from the info window - if (infoWindow != null && infoWindow.getView() != null) { - // Set the new text on the text view in the info window - TextView textView = (TextView) infoWindow.getView(); - textView.setText(String.format(Locale.getDefault(), "%.2fkm", distanceKm)); - textView.post(new Runnable() { - @Override - public void run() { - // Update the info window position (as the text length changes) - infoWindow.update(); - } - }); - } + mapboxMap.setOnMapClickListener(point -> { + // Distance from click to marker + double distanceKm = marker.getPosition().distanceTo(point) / 1000; + + // Get the info window + final InfoWindow infoWindow = marker.getInfoWindow(); + + // Get the view from the info window + if (infoWindow != null && infoWindow.getView() != null) { + // Set the new text on the text view in the info window + TextView textView = (TextView) infoWindow.getView(); + textView.setText(String.format(Locale.getDefault(), "%.2fkm", distanceKm)); + textView.post(() -> { + // Update the info window position (as the text length changes) + infoWindow.update(); + }); } }); @@ -97,17 +88,13 @@ public class DynamicInfoWindowAdapterActivity extends AppCompatActivity implemen private void addCustomInfoWindowAdapter(final MapboxMap mapboxMap) { final int padding = (int) getResources().getDimension(R.dimen.attr_margin); - mapboxMap.setInfoWindowAdapter(new MapboxMap.InfoWindowAdapter() { - - @Override - public View getInfoWindow(@NonNull Marker marker) { - TextView textView = new TextView(DynamicInfoWindowAdapterActivity.this); - textView.setText(marker.getTitle()); - textView.setBackgroundColor(Color.WHITE); - textView.setText(R.string.action_calculate_distance); - textView.setPadding(padding, padding, padding, padding); - return textView; - } + mapboxMap.setInfoWindowAdapter(marker -> { + TextView textView = new TextView(DynamicInfoWindowAdapterActivity.this); + textView.setText(marker.getTitle()); + textView.setBackgroundColor(Color.WHITE); + textView.setText(R.string.action_calculate_distance); + textView.setPadding(padding, padding, padding, padding); + return textView; }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java index 22347f8a92..d8dea0e3b5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java @@ -12,7 +12,6 @@ import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.model.annotations.CityStateMarker; import com.mapbox.mapboxsdk.testapp.model.annotations.CityStateMarkerOptions; @@ -33,13 +32,10 @@ public class InfoWindowAdapterActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap map) { - mapboxMap = map; - addMarkers(); - addCustomInfoWindowAdapter(); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + addMarkers(); + addCustomInfoWindowAdapter(); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java index 2c83f6d908..3b58843e13 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java @@ -7,6 +7,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.BottomSheetBehavior; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; @@ -35,7 +36,6 @@ public class BottomSheetActivity extends AppCompatActivity { private static final String TAG_BOTTOM_FRAGMENT = "com.mapbox.mapboxsdk.fragment.tag.bottom"; private boolean bottomSheetFragmentAdded; - private int mapViewCounter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -45,22 +45,11 @@ public class BottomSheetActivity extends AppCompatActivity { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayHomeAsUpEnabled(true); } - findViewById(R.id.fabFragment).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addMapFragment(); - } - }); + findViewById(R.id.fabFragment).setOnClickListener(v -> addMapFragment()); - findViewById(R.id.fabBottomSheet).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - toggleBottomSheetMapFragment(); - } - }); + findViewById(R.id.fabBottomSheet).setOnClickListener(v -> toggleBottomSheetMapFragment()); BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_sheet)); bottomSheetBehavior.setPeekHeight((int) (64 * getResources().getDisplayMetrics().density)); @@ -78,25 +67,29 @@ public class BottomSheetActivity extends AppCompatActivity { @Override public void onBackPressed() { - super.onBackPressed(); - if (mapViewCounter > 0) { - mapViewCounter--; - Toast.makeText(this, "Amount of main map fragments: " + mapViewCounter, Toast.LENGTH_SHORT).show(); + FragmentManager fragmentManager = getSupportFragmentManager(); + + if (fragmentManager.getBackStackEntryCount() > 0) { + fragmentManager.popBackStack(); + } else { + super.onBackPressed(); } } private void addMapFragment() { - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - MainMapFragment mainMapFragment = MainMapFragment.newInstance(mapViewCounter); - if (mapViewCounter == 0) { + FragmentManager fragmentManager = getSupportFragmentManager(); + int fragmentCount = fragmentManager.getBackStackEntryCount(); + + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + MainMapFragment mainMapFragment = MainMapFragment.newInstance(fragmentCount); + if (fragmentCount == 0) { fragmentTransaction.add(R.id.fragment_container, mainMapFragment, TAG_MAIN_FRAGMENT); } else { fragmentTransaction.replace(R.id.fragment_container, mainMapFragment, TAG_MAIN_FRAGMENT); } - fragmentTransaction.addToBackStack(null); + fragmentTransaction.addToBackStack(String.valueOf(mainMapFragment.hashCode())); fragmentTransaction.commit(); - mapViewCounter++; - Toast.makeText(this, "Amount of main map fragments: " + mapViewCounter, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Amount of main map fragments: " + (fragmentCount + 1), Toast.LENGTH_SHORT).show(); } private void toggleBottomSheetMapFragment() { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java index 9220a30c36..43e89728cb 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java @@ -11,12 +11,10 @@ import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; -import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.http.HttpRequestUtil; import com.mapbox.mapboxsdk.maps.MapView; @@ -84,13 +82,10 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa private void setupMapView(Bundle savedInstanceState) { mapView = (MapView) findViewById(R.id.mapView); - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(int change) { - if (change == MapView.DID_FINISH_LOADING_STYLE && mapboxMap != null) { - Timber.v("New style loaded with JSON: %s", mapboxMap.getStyleJson()); - setupNavigationView(mapboxMap.getLayers()); - } + mapView.addOnMapChangedListener(change -> { + if (change == MapView.DID_FINISH_LOADING_STYLE && mapboxMap != null) { + Timber.v("New style loaded with JSON: %s", mapboxMap.getStyleJson()); + setupNavigationView(mapboxMap.getLayers()); } }); @@ -112,25 +107,19 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa private void setFpsView() { final TextView fpsView = (TextView) findViewById(R.id.fpsView); - mapboxMap.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { - @Override - public void onFpsChanged(double fps) { - fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps)); - } - }); + mapboxMap.setOnFpsChangedListener(fps -> + fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps)) + ); } private void setupNavigationView(List<Layer> layerList) { final LayerListAdapter adapter = new LayerListAdapter(this, layerList); ListView listView = (ListView) findViewById(R.id.listView); listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - Layer clickedLayer = adapter.getItem(position); - toggleLayerVisibility(clickedLayer); - closeNavigationView(); - } + listView.setOnItemClickListener((parent, view, position, id) -> { + Layer clickedLayer = adapter.getItem(position); + toggleLayerVisibility(clickedLayer); + closeNavigationView(); }); } @@ -150,44 +139,30 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa private void setupZoomView() { final TextView textView = (TextView) findViewById(R.id.textZoom); - mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { - @Override - public void onCameraChange(CameraPosition position) { - textView.setText(String.format(getString(R.string.debug_zoom), position.zoom)); - } - }); + mapboxMap.setOnCameraChangeListener(position -> + textView.setText(String.format(getString(R.string.debug_zoom), position.zoom)) + ); } private void setupDebugChangeView() { FloatingActionButton fabDebug = (FloatingActionButton) findViewById(R.id.fabDebug); - fabDebug.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - Timber.d("Debug FAB: isDebug Active? %s", mapboxMap.isDebugActive()); - mapboxMap.cycleDebugOptions(); - } + fabDebug.setOnClickListener(view -> { + if (mapboxMap != null) { + Timber.d("Debug FAB: isDebug Active? %s", mapboxMap.isDebugActive()); + mapboxMap.cycleDebugOptions(); } }); } private void setupStyleChangeView() { FloatingActionButton fabStyles = (FloatingActionButton) findViewById(R.id.fabStyles); - fabStyles.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - currentStyleIndex++; - if (currentStyleIndex == STYLES.length) { - currentStyleIndex = 0; - } - mapboxMap.setStyleUrl(STYLES[currentStyleIndex], new MapboxMap.OnStyleLoadedListener() { - @Override - public void onStyleLoaded(String style) { - Timber.d("Style loaded %s", style); - } - }); + fabStyles.setOnClickListener(view -> { + if (mapboxMap != null) { + currentStyleIndex++; + if (currentStyleIndex == STYLES.length) { + currentStyleIndex = 0; } + mapboxMap.setStyleUrl(STYLES[currentStyleIndex], style -> Timber.d("Style loaded %s", style)); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java index 462c0c8025..75b2378ef7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java @@ -3,7 +3,6 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; @@ -14,10 +13,8 @@ import android.view.ViewGroup; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.constants.Style; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.TrackingSettings; import com.mapbox.mapboxsdk.maps.UiSettings; import com.mapbox.mapboxsdk.testapp.R; @@ -90,47 +87,38 @@ public class DoubleMapActivity extends AppCompatActivity { // MapView large mapView = (MapView) view.findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - if (activity != null) { - activity.setMapboxMap(mapboxMap); - } + mapView.getMapAsync(mapboxMap -> { + if (activity != null) { + activity.setMapboxMap(mapboxMap); } }); // MapView mini mapViewMini = (MapView) view.findViewById(R.id.mini_map); mapViewMini.onCreate(savedInstanceState); - mapViewMini.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - mapboxMap.setStyleUrl(Style.LIGHT); - mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(4)); - - UiSettings uiSettings = mapboxMap.getUiSettings(); - uiSettings.setAllGesturesEnabled(false); - uiSettings.setCompassEnabled(false); - uiSettings.setAttributionEnabled(false); - uiSettings.setLogoEnabled(false); - - try { - mapboxMap.setMyLocationEnabled(true); - TrackingSettings settings = mapboxMap.getTrackingSettings(); - settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); - } catch (SecurityException securityException) { - // permission is handled in MainActivity - getActivity().finish(); - } - - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - // test if we can open 2 activities after each other - startActivity(new Intent(mapViewMini.getContext(), DoubleMapActivity.class)); - } - }); + mapViewMini.getMapAsync(mapboxMap -> { + mapboxMap.setStyleUrl(Style.LIGHT); + mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(4)); + + UiSettings uiSettings = mapboxMap.getUiSettings(); + uiSettings.setAllGesturesEnabled(false); + uiSettings.setCompassEnabled(false); + uiSettings.setAttributionEnabled(false); + uiSettings.setLogoEnabled(false); + + try { + mapboxMap.setMyLocationEnabled(true); + TrackingSettings settings = mapboxMap.getTrackingSettings(); + settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + } catch (SecurityException securityException) { + // permission is handled in MainActivity + getActivity().finish(); } + + mapboxMap.setOnMapClickListener(point -> { + // test if we can open 2 activities after each other + startActivity(new Intent(mapViewMini.getContext(), DoubleMapActivity.class)); + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java index bc07765bf7..18d675a289 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java @@ -12,6 +12,10 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; +/** + * Test activity that displays the city of Suzhou with a mixture of server-generated + * latin glyphs and CJK glyphs generated locally using "Droid Sans" as a font family. + */ public class LocalGlyphActivity extends AppCompatActivity { private MapView mapView; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapChangeActivity.java index 32344248bc..160e69ed6e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapChangeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapChangeActivity.java @@ -8,7 +8,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import timber.log.Timber; @@ -28,21 +27,13 @@ public class MapChangeActivity extends AppCompatActivity { final LongSparseArray<String> mapChangeMap = buildMapChangeStringValueSparseArray(); mapView = (MapView) findViewById(R.id.mapView); - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(int change) { - Timber.e("OnMapChange: %s, %s", change, mapChangeMap.get(change)); - } - }); + mapView.addOnMapChangedListener(change -> Timber.e("OnMapChange: %s, %s", change, mapChangeMap.get(change))); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom( - new LatLng(55.754020, 37.620948), 12), 9000); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom( + new LatLng(55.754020, 37.620948), 12), 9000); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java index f0827c65cc..ce00c9d18f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java @@ -29,13 +29,10 @@ public class MapInDialogActivity extends AppCompatActivity { setContentView(R.layout.activity_map_in_dialog); Button button = (Button) findViewById(R.id.button_open_dialog); - button.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - FragmentManager fm = getSupportFragmentManager(); - MapDialogFragment editNameDialogFragment = MapDialogFragment.newInstance("Map Dialog"); - editNameDialogFragment.show(fm, "fragment_dialog_map"); - } + button.setOnClickListener(view -> { + FragmentManager fm = getSupportFragmentManager(); + MapDialogFragment editNameDialogFragment = MapDialogFragment.newInstance("Map Dialog"); + editNameDialogFragment.show(fm, "fragment_dialog_map"); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java index 0cf0191cea..9a6079b157 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java @@ -1,7 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; @@ -13,7 +12,6 @@ import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.TrackingSettings; import com.mapbox.mapboxsdk.testapp.R; @@ -37,19 +35,16 @@ public class MapPaddingActivity extends AppCompatActivity { mapView.setTag(true); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - MapPaddingActivity.this.mapboxMap = mapboxMap; + mapView.getMapAsync(mapboxMap -> { + MapPaddingActivity.this.mapboxMap = mapboxMap; - int paddingLeft = (int) getResources().getDimension(R.dimen.map_padding_left); - int paddingBottom = (int) getResources().getDimension(R.dimen.map_padding_bottom); - int paddingRight = (int) getResources().getDimension(R.dimen.map_padding_right); - int paddingTop = (int) getResources().getDimension(R.dimen.map_padding_top); - mapboxMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); + int paddingLeft = (int) getResources().getDimension(R.dimen.map_padding_left); + int paddingBottom = (int) getResources().getDimension(R.dimen.map_padding_bottom); + int paddingRight = (int) getResources().getDimension(R.dimen.map_padding_right); + int paddingTop = (int) getResources().getDimension(R.dimen.map_padding_top); + mapboxMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); - moveToBangalore(); - } + moveToBangalore(); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/VisibilityChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/VisibilityChangeActivity.java index 393abb7cd4..c5d7dfbef7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/VisibilityChangeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/VisibilityChangeActivity.java @@ -9,7 +9,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -29,13 +28,10 @@ public class VisibilityChangeActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom( - new LatLng(55.754020, 37.620948), 12), 9000); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom( + new LatLng(55.754020, 37.620948), 12), 9000); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java index 220f46f4e8..037c51f723 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java @@ -1,7 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity.offline; import android.content.Context; -import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; @@ -53,18 +52,8 @@ public class DeleteRegionActivity extends AppCompatActivity implements AdapterVi input.setText(metadata); builder.setView(input); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - delete(region); - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }); + builder.setPositiveButton("OK", (dialog, which) -> delete(region)); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); builder.show(); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java index 3a59e0628d..79e76168d5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java @@ -1,7 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity.offline; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; @@ -17,7 +16,6 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.offline.OfflineManager; import com.mapbox.mapboxsdk.offline.OfflineRegion; import com.mapbox.mapboxsdk.offline.OfflineRegionError; @@ -80,21 +78,18 @@ public class OfflineActivity extends AppCompatActivity mapView = (MapView) findViewById(R.id.mapView); mapView.setStyleUrl(STYLE_URL); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - Timber.d("Map is ready"); - OfflineActivity.this.mapboxMap = mapboxMap; - - // Set initial position to UNHQ in NYC - mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition( - new CameraPosition.Builder() - .target(new LatLng(40.749851, -73.967966)) - .zoom(14) - .bearing(0) - .tilt(0) - .build())); - } + mapView.getMapAsync(mapboxMap -> { + Timber.d("Map is ready"); + OfflineActivity.this.mapboxMap = mapboxMap; + + // Set initial position to UNHQ in NYC + mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition( + new CameraPosition.Builder() + .target(new LatLng(40.749851, -73.967966)) + .zoom(14) + .bearing(0) + .tilt(0) + .build())); }); // The progress bar @@ -102,20 +97,10 @@ public class OfflineActivity extends AppCompatActivity // Set up button listeners downloadRegion = (Button) findViewById(R.id.button_download_region); - downloadRegion.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - handleDownloadRegion(); - } - }); + downloadRegion.setOnClickListener(view -> handleDownloadRegion()); listRegions = (Button) findViewById(R.id.button_list_regions); - listRegions.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - handleListRegions(); - } - }); + listRegions.setOnClickListener(view -> handleListRegions()); // Set up the OfflineManager offlineManager = OfflineManager.getInstance(this); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java index 285e896766..c5ad467673 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java @@ -1,7 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity.offline; import android.content.Context; -import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; @@ -57,18 +56,10 @@ public class UpdateMetadataActivity extends AppCompatActivity implements Adapter input.setSelection(metadata.length()); builder.setView(input); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - updateMetadata(region, OfflineUtils.convertRegionName(input.getText().toString())); - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }); + builder.setPositiveButton("OK", (dialog, which) -> + updateMetadata(region, OfflineUtils.convertRegionName(input.getText().toString())) + ); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); builder.show(); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java index c4fe93d200..aadf021a89 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java @@ -10,7 +10,6 @@ import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.geometry.LatLngBounds; -import com.mapbox.mapboxsdk.snapshotter.MapSnapshot; import com.mapbox.mapboxsdk.snapshotter.MapSnapshotter; import com.mapbox.mapboxsdk.testapp.R; @@ -95,17 +94,14 @@ public class MapSnapshotterActivity extends AppCompatActivity { MapSnapshotter snapshotter = new MapSnapshotter(MapSnapshotterActivity.this, options); - snapshotter.start(new MapSnapshotter.SnapshotReadyCallback() { - @Override - public void onSnapshotReady(MapSnapshot snapshot) { - Timber.i("Got the snapshot"); - ImageView imageView = new ImageView(MapSnapshotterActivity.this); - imageView.setImageBitmap(snapshot.getBitmap()); - grid.addView( - imageView, - new GridLayout.LayoutParams(GridLayout.spec(row), GridLayout.spec(column)) - ); - } + snapshotter.start(snapshot -> { + Timber.i("Got the snapshot"); + ImageView imageView = new ImageView(MapSnapshotterActivity.this); + imageView.setImageBitmap(snapshot.getBitmap()); + grid.addView( + imageView, + new GridLayout.LayoutParams(GridLayout.spec(row), GridLayout.spec(column)) + ); }); snapshotters.add(snapshotter); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java index 50f9be77fa..ef5913beb0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterReuseActivity.java @@ -31,24 +31,21 @@ public class MapSnapshotterReuseActivity extends AppCompatActivity implements Ma fab = findViewById(R.id.fab); fab.setVisibility(View.INVISIBLE); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - fab.setVisibility(View.INVISIBLE); - - mapSnapshotter.setStyleUrl(getRandomStyle()); - if (random.nextInt(2) == 0) { - mapSnapshotter.setCameraPosition(getRandomCameraPosition()); - } else { - mapSnapshotter.setRegion(getRandomBounds()); - } - if (random.nextInt(2) == 0) { - mapSnapshotter.setSize(512, 512); - } else { - mapSnapshotter.setSize(256, 256); - } - mapSnapshotter.start(MapSnapshotterReuseActivity.this); + fab.setOnClickListener(v -> { + fab.setVisibility(View.INVISIBLE); + + mapSnapshotter.setStyleUrl(getRandomStyle()); + if (random.nextInt(2) == 0) { + mapSnapshotter.setCameraPosition(getRandomCameraPosition()); + } else { + mapSnapshotter.setRegion(getRandomBounds()); } + if (random.nextInt(2) == 0) { + mapSnapshotter.setSize(512, 512); + } else { + mapSnapshotter.setSize(256, 256); + } + mapSnapshotter.start(MapSnapshotterReuseActivity.this); }); mapSnapshotter = new MapSnapshotter( diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/UrlTransformActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/UrlTransformActivity.java index 74b43e0257..6a1fd8e4e0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/UrlTransformActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/UrlTransformActivity.java @@ -6,7 +6,6 @@ import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.storage.FileSource; import com.mapbox.mapboxsdk.storage.Resource; import com.mapbox.mapboxsdk.testapp.R; @@ -47,12 +46,9 @@ public class UrlTransformActivity extends AppCompatActivity { // Get a handle to the file source and set the resource transform FileSource.getInstance(UrlTransformActivity.this).setResourceTransform(new Transform()); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - Timber.i("Map loaded"); - mapboxMap = map; - } + mapView.getMapAsync(map -> { + Timber.i("Map loaded"); + mapboxMap = map; }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java index 1beba632b0..1014af25db 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/AnimatedImageSourceActivity.java @@ -18,7 +18,6 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.RasterLayer; import com.mapbox.mapboxsdk.style.sources.ImageSource; - import com.mapbox.mapboxsdk.testapp.R; /** diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/BuildingFillExtrusionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/BuildingFillExtrusionActivity.java index def7d1678a..609910892b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/BuildingFillExtrusionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/BuildingFillExtrusionActivity.java @@ -2,15 +2,12 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.functions.Function; import com.mapbox.mapboxsdk.style.functions.stops.IdentityStops; import com.mapbox.mapboxsdk.style.layers.FillExtrusionLayer; @@ -46,13 +43,10 @@ public class BuildingFillExtrusionActivity extends AppCompatActivity { setContentView(R.layout.activity_building_layer); mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - setupBuildings(); - setupLight(); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + setupBuildings(); + setupLight(); }); } @@ -73,24 +67,18 @@ public class BuildingFillExtrusionActivity extends AppCompatActivity { private void setupLight() { light = mapboxMap.getLight(); - findViewById(R.id.fabLightPosition).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isInitPosition = !isInitPosition; - if (isInitPosition) { - light.setPosition(new Position(1.5f, 90, 80)); - } else { - light.setPosition(new Position(1.15f, 210, 30)); - } + findViewById(R.id.fabLightPosition).setOnClickListener(v -> { + isInitPosition = !isInitPosition; + if (isInitPosition) { + light.setPosition(new Position(1.5f, 90, 80)); + } else { + light.setPosition(new Position(1.15f, 210, 30)); } }); - findViewById(R.id.fabLightColor).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - isRedColor = !isRedColor; - light.setColor(PropertyFactory.colorToRgbaString(isRedColor ? Color.RED : Color.BLUE)); - } + findViewById(R.id.fabLightColor).setOnClickListener(v -> { + isRedColor = !isRedColor; + light.setColor(PropertyFactory.colorToRgbaString(isRedColor ? Color.RED : Color.BLUE)); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java index f99a1fdb96..6aa8777777 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; @@ -14,7 +13,6 @@ import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.CircleLayer; import com.mapbox.mapboxsdk.style.layers.LineLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; @@ -56,16 +54,12 @@ public class CircleLayerActivity extends AppCompatActivity implements View.OnCli mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull - final MapboxMap map) { - mapboxMap = map; - addBusStopSource(); - addBusStopCircleLayer(); - initFloatingActionButtons(); - isLoadingStyle = false; - } + mapView.getMapAsync(map -> { + mapboxMap = map; + addBusStopSource(); + addBusStopCircleLayer(); + initFloatingActionButtons(); + isLoadingStyle = false; }); } @@ -161,12 +155,9 @@ public class CircleLayerActivity extends AppCompatActivity implements View.OnCli } private void loadNewStyle() { - mapboxMap.setStyleUrl(getNextStyle(), new MapboxMap.OnStyleLoadedListener() { - @Override - public void onStyleLoaded(String style) { - addBusStop(); - isLoadingStyle = false; - } + mapboxMap.setStyleUrl(getNextStyle(), style -> { + addBusStop(); + isLoadingStyle = false; }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java index 3763b45e7a..8d35e659d3 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.BitmapFactory; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; @@ -12,7 +11,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.Layer; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; @@ -45,56 +43,53 @@ public class CustomSpriteActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); - fab.setColorFilter(ContextCompat.getColor(CustomSpriteActivity.this, R.color.primary)); - fab.setOnClickListener(new View.OnClickListener() { - private Point point; - - @Override - public void onClick(View view) { - if (point == null) { - Timber.i("First click -> Car"); - // Add an icon to reference later - mapboxMap.addImage(CUSTOM_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.ic_car_top)); - - // Add a source with a geojson point - point = Point.fromCoordinates(Position.fromCoordinates(13.400972d, 52.519003d)); - source = new GeoJsonSource( - "point", - FeatureCollection.fromFeatures(new Feature[] {Feature.fromGeometry(point)}) - ); - mapboxMap.addSource(source); - - // Add a symbol layer that references that point source - layer = new SymbolLayer("layer", "point"); - layer.setProperties( - // Set the id of the sprite to use - iconImage(CUSTOM_ICON) - ); - - // lets add a circle below labels! - mapboxMap.addLayerBelow(layer, "waterway-label"); - - fab.setImageResource(R.drawable.ic_directions_car_black); - } else { - // Update point - point = Point.fromCoordinates( - Position.fromCoordinates(point.getCoordinates().getLongitude() + 0.001, - point.getCoordinates().getLatitude() + 0.001) - ); - source.setGeoJson(FeatureCollection.fromFeatures(new Feature[] {Feature.fromGeometry(point)})); - - // Move the camera as well - mapboxMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng( - point.getCoordinates().getLatitude(), point.getCoordinates().getLongitude()))); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + fab.setColorFilter(ContextCompat.getColor(CustomSpriteActivity.this, R.color.primary)); + fab.setOnClickListener(new View.OnClickListener() { + private Point point; + + @Override + public void onClick(View view) { + if (point == null) { + Timber.i("First click -> Car"); + // Add an icon to reference later + mapboxMap.addImage(CUSTOM_ICON, BitmapFactory.decodeResource(getResources(), R.drawable.ic_car_top)); + + // Add a source with a geojson point + point = Point.fromCoordinates(Position.fromCoordinates(13.400972d, 52.519003d)); + source = new GeoJsonSource( + "point", + FeatureCollection.fromFeatures(new Feature[] {Feature.fromGeometry(point)}) + ); + mapboxMap.addSource(source); + + // Add a symbol layer that references that point source + layer = new SymbolLayer("layer", "point"); + layer.setProperties( + // Set the id of the sprite to use + iconImage(CUSTOM_ICON) + ); + + // lets add a circle below labels! + mapboxMap.addLayerBelow(layer, "waterway-label"); + + fab.setImageResource(R.drawable.ic_directions_car_black); + } else { + // Update point + point = Point.fromCoordinates( + Position.fromCoordinates(point.getCoordinates().getLongitude() + 0.001, + point.getCoordinates().getLatitude() + 0.001) + ); + source.setGeoJson(FeatureCollection.fromFeatures(new Feature[] {Feature.fromGeometry(point)})); + + // Move the camera as well + mapboxMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng( + point.getCoordinates().getLatitude(), point.getCoordinates().getLongitude()))); } - }); - } + } + }); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java index 571b48daa6..cbac62bcc1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/DataDrivenStyleActivity.java @@ -5,14 +5,14 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; +import android.widget.TextView; import android.widget.Toast; +import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.style.functions.stops.Stops; import com.mapbox.mapboxsdk.style.layers.FillLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.style.sources.Source; @@ -23,13 +23,16 @@ import java.io.IOException; import timber.log.Timber; -import static com.mapbox.mapboxsdk.style.functions.Function.composite; -import static com.mapbox.mapboxsdk.style.functions.Function.property; -import static com.mapbox.mapboxsdk.style.functions.Function.zoom; -import static com.mapbox.mapboxsdk.style.functions.stops.Stop.stop; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.categorical; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.exponential; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.interval; +import static com.mapbox.mapboxsdk.style.expressions.Expression.color; +import static com.mapbox.mapboxsdk.style.expressions.Expression.exponential; +import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.expressions.Expression.interpolate; +import static com.mapbox.mapboxsdk.style.expressions.Expression.linear; +import static com.mapbox.mapboxsdk.style.expressions.Expression.literal; +import static com.mapbox.mapboxsdk.style.expressions.Expression.match; +import static com.mapbox.mapboxsdk.style.expressions.Expression.step; +import static com.mapbox.mapboxsdk.style.expressions.Expression.stop; +import static com.mapbox.mapboxsdk.style.expressions.Expression.zoom; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillAntialias; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillColor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.fillOpacity; @@ -53,22 +56,32 @@ public class DataDrivenStyleActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); + mapView.getMapAsync(map -> { + // Store for later + mapboxMap = map; - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - // Store for later - mapboxMap = map; + // Add a parks layer + addParksLayer(); + + // Add debug overlay + setupDebugZoomView(); - // Add a parks layer - addParksLayer(); + // Center and Zoom (Amsterdam, zoomed to streets) + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); + }); + } - // Center and Zoom (Amsterdam, zoomed to streets) - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); + private void setupDebugZoomView() { + final TextView textView = (TextView) findViewById(R.id.textZoom); + mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { + @Override + public void onCameraChange(CameraPosition position) { + textView.setText(String.format(getString(R.string.debug_zoom), position.zoom)); } }); } + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_data_driven_style, menu); @@ -159,12 +172,11 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - zoom( - exponential( - stop(1, fillColor(Color.RED)), - stop(5, fillColor(Color.BLUE)), - stop(10, fillColor(Color.GREEN)) - ).withBase(0.5f) + interpolate( + exponential(0.5f), zoom(), + stop(1, color(Color.RED)), + stop(5, color(Color.BLUE)), + stop(10, color(Color.GREEN)) ) ) ); @@ -178,12 +190,11 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - zoom( - interval( - stop(1, fillColor(Color.RED)), - stop(5, fillColor(Color.BLUE)), - stop(10, fillColor(Color.GREEN)) - ) + step(zoom(), + color(Color.CYAN), + stop(1, color(Color.RED)), + stop(5, color(Color.BLUE)), + stop(10, color(Color.GREEN)) ) ) ); @@ -197,13 +208,12 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "stroke-width", - exponential( - stop(1f, fillColor(Color.RED)), - stop(5f, fillColor(Color.BLUE)), - stop(10f, fillColor(Color.GREEN)) - ).withBase(0.5f) + interpolate( + exponential(0.5f), + get("stroke-width"), + stop(1f, color(Color.RED)), + stop(5f, color(Color.BLUE)), + stop(10f, color(Color.GREEN)) ) ) ); @@ -217,13 +227,13 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "name", - categorical( - stop("Westerpark", fillColor(Color.RED)), - stop("Jordaan", fillColor(Color.BLUE)), - stop("Prinseneiland", fillColor(Color.GREEN)) - )) + match( + get("name"), + literal("Westerpark"), color(Color.RED), + literal("Jordaan"), color(Color.BLUE), + literal("Prinseneiland"), color(Color.GREEN), + color(Color.CYAN) + ) ) ); @@ -236,9 +246,7 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillOpacity( - property( - "fill-opacity", - Stops.<Float>identity()) + get("fill-opacity") ) ); @@ -251,13 +259,13 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - property( - "stroke-width", - interval( - stop(1f, fillColor(Color.RED)), - stop(5f, fillColor(Color.BLUE)), - stop(10f, fillColor(Color.GREEN)) - )) + step( + get("stroke-width"), + color(Color.CYAN), + stop(1f, color(Color.RED)), + stop(2f, color(Color.BLUE)), + stop(3f, color(Color.GREEN)) + ) ) ); @@ -270,16 +278,30 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - composite( - "stroke-width", - exponential( - stop(1, 1, fillColor(Color.RED)), - stop(10, 2, fillColor(Color.BLUE)), - stop(22, 3, fillColor(Color.GREEN)), - stop(1, 1, fillColor(Color.CYAN)), - stop(10, 2, fillColor(Color.GRAY)), - stop(22, 3, fillColor(Color.YELLOW)) - ).withBase(1f) + interpolate( + exponential(1f), + zoom(), + stop(12, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.RED)), + stop(2f, color(Color.WHITE)), + stop(3f, color(Color.BLUE)) + )), + stop(15, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.YELLOW)), + stop(2f, color(Color.LTGRAY)), + stop(3f, color(Color.CYAN)) + )), + stop(18, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.WHITE)), + stop(2f, color(Color.GRAY)), + stop(3f, color(Color.GREEN))) + ) ) ) ); @@ -288,21 +310,36 @@ public class DataDrivenStyleActivity extends AppCompatActivity { } private void addCompositeIntervalFunction() { - Timber.i("Add composite exponential function"); + Timber.i("Add composite interval function"); FillLayer layer = mapboxMap.getLayerAs(AMSTERDAM_PARKS_LAYER); assert layer != null; layer.setProperties( fillColor( - composite( - "stroke-width", - interval( - stop(1, 1, fillColor(Color.RED)), - stop(10, 2, fillColor(Color.BLUE)), - stop(22, 3, fillColor(Color.GREEN)), - stop(1, 1, fillColor(Color.CYAN)), - stop(10, 2, fillColor(Color.GRAY)), - stop(22, 3, fillColor(Color.YELLOW)) + interpolate( + linear(), + zoom(), + stop(12, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.RED)), + stop(2f, color(Color.WHITE)), + stop(3f, color(Color.BLUE)) + )), + stop(15, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.YELLOW)), + stop(2f, color(Color.LTGRAY)), + stop(3f, color(Color.CYAN)) + )), + stop(18, step( + get("stroke-width"), + color(Color.BLACK), + stop(1f, color(Color.WHITE)), + stop(2f, color(Color.GRAY)), + stop(3f, color(Color.GREEN)) )) + ) ) ); @@ -315,30 +352,92 @@ public class DataDrivenStyleActivity extends AppCompatActivity { assert layer != null; layer.setProperties( fillColor( - composite( - "name", - categorical( - stop(7f, "Westerpark", fillColor(Color.RED)), - stop(8f, "Westerpark", fillColor(Color.BLUE)), - stop(9f, "Westerpark", fillColor(Color.RED)), - stop(10f, "Westerpark", fillColor(Color.BLUE)), - stop(11f, "Westerpark", fillColor(Color.RED)), - stop(12f, "Westerpark", fillColor(Color.BLUE)), - stop(13f, "Westerpark", fillColor(Color.RED)), - stop(14f, "Westerpark", fillColor(Color.BLUE)), - stop(15f, "Westerpark", fillColor(Color.RED)), - stop(16f, "Westerpark", fillColor(Color.BLUE)), - stop(17f, "Westerpark", fillColor(Color.RED)), - stop(18f, "Westerpark", fillColor(Color.BLUE)), - stop(19f, "Westerpark", fillColor(Color.RED)), - stop(20f, "Westerpark", fillColor(Color.BLUE)), - stop(21f, "Westerpark", fillColor(Color.RED)), - stop(22f, "Westerpark", fillColor(Color.BLUE)), - stop(14f, "Jordaan", fillColor(Color.GREEN)), - stop(18f, "Jordaan", fillColor(Color.CYAN)), - stop(14f, "Prinseneiland", fillColor(Color.WHITE)), - stop(18f, "Prinseneiland", fillColor(Color.BLACK)) + step(zoom(), + color(Color.BLACK), + stop(7f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(8f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(9f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(10f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(11f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(12f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(13f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(14f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + literal("Jordaan"), color(Color.GREEN), + literal("PrinsenEiland"), color(Color.WHITE), + color(Color.BLACK) + )), + stop(15f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(16f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(17f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(18f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + literal("Jordaan"), color(Color.CYAN), + color(Color.BLACK) + )), + stop(19f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(20f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) + )), + stop(21f, match( + get("name"), + literal("Westerpark"), color(Color.RED), + color(Color.BLACK) + )), + stop(22f, match( + get("name"), + literal("Westerpark"), color(Color.BLUE), + color(Color.BLACK) )) + ) ) ); @@ -359,7 +458,6 @@ public class DataDrivenStyleActivity extends AppCompatActivity { return; } - // Add a fill layer mapboxMap.addLayer(new FillLayer(AMSTERDAM_PARKS_LAYER, source.getId()) .withProperties( diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionActivity.java index 52ba8d7c7b..a88a489cb1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionActivity.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.Color; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.camera.CameraPosition; @@ -10,7 +9,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.FillExtrusionLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.testapp.R; @@ -35,58 +33,55 @@ public class FillExtrusionActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - Polygon domTower = Polygon.fromCoordinates(new double[][][] { - new double[][] { - new double[] { - 5.12112557888031, - 52.09071040847704 - }, - new double[] { - 5.121227502822875, - 52.09053901776669 - }, - new double[] { - 5.121484994888306, - 52.090601641371805 - }, - new double[] { - 5.1213884353637695, - 52.090766439912635 - }, - new double[] { - 5.12112557888031, - 52.09071040847704 - } + mapView.getMapAsync(map -> { + mapboxMap = map; + Polygon domTower = Polygon.fromCoordinates(new double[][][] { + new double[][] { + new double[] { + 5.12112557888031, + 52.09071040847704 + }, + new double[] { + 5.121227502822875, + 52.09053901776669 + }, + new double[] { + 5.121484994888306, + 52.090601641371805 + }, + new double[] { + 5.1213884353637695, + 52.090766439912635 + }, + new double[] { + 5.12112557888031, + 52.09071040847704 } - }); - - GeoJsonSource source = new GeoJsonSource("extrusion-source", domTower); - map.addSource(source); - - mapboxMap.addLayer( - new FillExtrusionLayer("extrusion-layer", source.getId()) - .withProperties( - fillExtrusionHeight(40f), - fillExtrusionOpacity(0.5f), - fillExtrusionColor(Color.RED) - ) - ); - - mapboxMap.animateCamera( - CameraUpdateFactory.newCameraPosition( - new CameraPosition.Builder() - .target(new LatLng(52.09071040847704, 5.12112557888031)) - .tilt(45.0) - .zoom(18) - .build() - ), - 10000 - ); - } + } + }); + + GeoJsonSource source = new GeoJsonSource("extrusion-source", domTower); + map.addSource(source); + + mapboxMap.addLayer( + new FillExtrusionLayer("extrusion-layer", source.getId()) + .withProperties( + fillExtrusionHeight(40f), + fillExtrusionOpacity(0.5f), + fillExtrusionColor(Color.RED) + ) + ); + + mapboxMap.animateCamera( + CameraUpdateFactory.newCameraPosition( + new CameraPosition.Builder() + .target(new LatLng(52.09071040847704, 5.12112557888031)) + .tilt(45.0) + .zoom(18) + .build() + ), + 10000 + ); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionStyleTestActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionStyleTestActivity.java index 24914fcbb2..b872d022e3 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionStyleTestActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/FillExtrusionStyleTestActivity.java @@ -5,7 +5,6 @@ import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -24,12 +23,7 @@ public class FillExtrusionStyleTestActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap mapboxMap) { - FillExtrusionStyleTestActivity.this.mapboxMap = mapboxMap; - } - }); + mapView.getMapAsync(mapboxMap -> FillExtrusionStyleTestActivity.this.mapboxMap = mapboxMap); } public MapboxMap getMapboxMap() { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java index a2111bc304..8664979292 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java @@ -10,7 +10,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.CircleLayer; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; @@ -50,15 +49,12 @@ public class GeoJsonClusteringActivity extends AppCompatActivity { // noinspection ConstantConditions mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.7749, 122.4194), 0)); + mapView.getMapAsync(map -> { + mapboxMap = map; + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.7749, 122.4194), 0)); - // Add a clustered source with some layers - addClusteredGeoJsonSource(); - } + // Add a clustered source with some layers + addClusteredGeoJsonSource(); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GridSourceActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GridSourceActivity.java new file mode 100644 index 0000000000..9dda0f8fa2 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GridSourceActivity.java @@ -0,0 +1,151 @@ +package com.mapbox.mapboxsdk.testapp.activity.style; + +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; + +import com.mapbox.mapboxsdk.geometry.LatLngBounds; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; +import com.mapbox.mapboxsdk.style.layers.LineLayer; +import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource; +import com.mapbox.mapboxsdk.style.sources.GeometryTileProvider; +import com.mapbox.mapboxsdk.testapp.R; +import com.mapbox.services.commons.geojson.Feature; +import com.mapbox.services.commons.geojson.FeatureCollection; +import com.mapbox.services.commons.geojson.MultiLineString; +import com.mapbox.services.commons.models.Position; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.lineColor; + +/** + * Test activity showcasing using CustomGeometrySource to create a grid overlay on the map. + */ +public class GridSourceActivity extends AppCompatActivity implements OnMapReadyCallback { + + private static final String ID_GRID_SOURCE = "grid_source"; + private static final String ID_GRID_LAYER = "grid_layer"; + + private MapView mapView; + private MapboxMap mapboxMap; + + /** + * Implementation of GeometryTileProvider that returns features representing a zoom-dependent + * grid. + */ + static class GridProvider implements GeometryTileProvider { + public FeatureCollection getFeaturesForBounds(LatLngBounds bounds, int zoom) { + List<Feature> features = new ArrayList<>(); + double gridSpacing; + if (zoom >= 13) { + gridSpacing = 0.01; + } else if (zoom >= 11) { + gridSpacing = 0.05; + } else if (zoom == 10) { + gridSpacing = .1; + } else if (zoom == 9) { + gridSpacing = 0.25; + } else if (zoom == 8) { + gridSpacing = 0.5; + } else if (zoom >= 6) { + gridSpacing = 1; + } else if (zoom == 5) { + gridSpacing = 2; + } else if (zoom >= 4) { + gridSpacing = 5; + } else if (zoom == 2) { + gridSpacing = 10; + } else { + gridSpacing = 20; + } + + List gridLines = new ArrayList(); + for (double y = Math.ceil(bounds.getLatNorth() / gridSpacing) * gridSpacing; + y >= Math.floor(bounds.getLatSouth() / gridSpacing) * gridSpacing; y -= gridSpacing) { + gridLines.add(Arrays.asList(Position.fromCoordinates(bounds.getLonWest(), y), + Position.fromCoordinates(bounds.getLonEast(), y))); + } + features.add(Feature.fromGeometry(MultiLineString.fromCoordinates(gridLines))); + + gridLines = new ArrayList(); + for (double x = Math.floor(bounds.getLonWest() / gridSpacing) * gridSpacing; + x <= Math.ceil(bounds.getLonEast() / gridSpacing) * gridSpacing; x += gridSpacing) { + gridLines.add(Arrays.asList(Position.fromCoordinates(x, bounds.getLatSouth()), + Position.fromCoordinates(x, bounds.getLatNorth()))); + } + features.add(Feature.fromGeometry(MultiLineString.fromCoordinates(gridLines))); + + return FeatureCollection.fromFeatures(features); + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_grid_source); + + mapView = (MapView) findViewById(R.id.mapView); + mapView.onCreate(savedInstanceState); + mapView.getMapAsync(this); + } + + @Override + public void onMapReady(@NonNull final MapboxMap map) { + mapboxMap = map; + + // add source + CustomGeometrySource source = new CustomGeometrySource(ID_GRID_SOURCE, new GridProvider()); + mapboxMap.addSource(source); + + // add layer + LineLayer layer = new LineLayer(ID_GRID_LAYER, ID_GRID_SOURCE); + layer.setProperties( + lineColor(Color.parseColor("#000000")) + ); + + mapboxMap.addLayer(layer); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + public void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + mapView.onPause(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.onDestroy(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java index adce889007..25d1040bf0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java @@ -12,10 +12,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.style.functions.Function; -import com.mapbox.mapboxsdk.style.functions.stops.ExponentialStops; -import com.mapbox.mapboxsdk.style.functions.stops.Stop; import com.mapbox.mapboxsdk.style.layers.CircleLayer; import com.mapbox.mapboxsdk.style.layers.FillLayer; import com.mapbox.mapboxsdk.style.layers.Layer; @@ -42,9 +38,11 @@ import java.util.List; import timber.log.Timber; -import static com.mapbox.mapboxsdk.style.functions.Function.zoom; -import static com.mapbox.mapboxsdk.style.functions.stops.Stop.stop; -import static com.mapbox.mapboxsdk.style.functions.stops.Stops.exponential; +import static com.mapbox.mapboxsdk.style.expressions.Expression.color; +import static com.mapbox.mapboxsdk.style.expressions.Expression.exponential; +import static com.mapbox.mapboxsdk.style.expressions.Expression.interpolate; +import static com.mapbox.mapboxsdk.style.expressions.Expression.stop; +import static com.mapbox.mapboxsdk.style.expressions.Expression.zoom; import static com.mapbox.mapboxsdk.style.layers.Filter.all; import static com.mapbox.mapboxsdk.style.layers.Filter.eq; import static com.mapbox.mapboxsdk.style.layers.Filter.gte; @@ -85,18 +83,15 @@ public class RuntimeStyleActivity extends AppCompatActivity { mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - // Store for later - mapboxMap = map; + mapView.getMapAsync(map -> { + // Store for later + mapboxMap = map; - // Center and Zoom (Amsterdam, zoomed to streets) - mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); + // Center and Zoom (Amsterdam, zoomed to streets) + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.379189, 4.899431), 14)); - mapboxMap.setTransitionDuration(250); - mapboxMap.setTransitionDelay(50); - } + mapboxMap.setTransitionDuration(250); + mapboxMap.setTransitionDelay(50); }); } @@ -362,32 +357,29 @@ public class RuntimeStyleActivity extends AppCompatActivity { private void animateParksSource(final FeatureCollection parks, final int counter) { Handler handler = new Handler(getMainLooper()); - handler.postDelayed(new Runnable() { - @Override - public void run() { - if (mapboxMap == null) { - return; - } + handler.postDelayed(() -> { + if (mapboxMap == null) { + return; + } - Timber.d("Updating parks source"); - // change the source - int park = counter < parks.getFeatures().size() - 1 ? counter : 0; + Timber.d("Updating parks source"); + // change the source + int park = counter < parks.getFeatures().size() - 1 ? counter : 0; - GeoJsonSource source = mapboxMap.getSourceAs("dynamic-park-source"); + GeoJsonSource source = mapboxMap.getSourceAs("dynamic-park-source"); - if (source == null) { - Timber.e("Source not found"); - Toast.makeText(RuntimeStyleActivity.this, "Source not found", Toast.LENGTH_SHORT).show(); - return; - } + if (source == null) { + Timber.e("Source not found"); + Toast.makeText(RuntimeStyleActivity.this, "Source not found", Toast.LENGTH_SHORT).show(); + return; + } - List<Feature> features = new ArrayList<>(); - features.add(parks.getFeatures().get(park)); - source.setGeoJson(FeatureCollection.fromFeatures(features)); + List<Feature> features = new ArrayList<>(); + features.add(parks.getFeatures().get(park)); + source.setGeoJson(FeatureCollection.fromFeatures(features)); - // Re-post - animateParksSource(parks, park + 1); - } + // Re-post + animateParksSource(parks, park + 1); }, counter == 0 ? 100 : 1000); } @@ -453,32 +445,21 @@ public class RuntimeStyleActivity extends AppCompatActivity { } // Set a zoom function to update the color of the water - layer.setProperties(fillColor( - zoom( - exponential( - stop(1, fillColor(Color.GREEN)), - stop(4, fillColor(Color.BLUE)), - stop(12, fillColor(Color.RED)), - stop(20, fillColor(Color.BLACK)) - ).withBase(0.8f) + layer.setProperties( + fillColor( + interpolate( + exponential(0.8f), + zoom(), + stop(1, color(Color.GREEN)), + stop(4, color(Color.BLUE)), + stop(12, color(Color.RED)), + stop(20, color(Color.BLACK)) + ) ) - )); + ); // do some animations to show it off properly mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(1), 1500); - - PropertyValue<String> fillColor = layer.getFillColor(); - Function<Float, String> function = (Function<Float, String>) fillColor.getFunction(); - if (function != null) { - ExponentialStops<Float, String> stops = (ExponentialStops) function.getStops(); - Timber.d("Fill color base: %s", stops.getBase()); - Timber.d("Fill color #stops: %s", stops.size()); - if (function.getStops() != null) { - for (Stop<Float, String> stop : stops) { - Timber.d("Fill color #stops: %s", stop); - } - } - } } private void addCustomTileSource() { @@ -498,28 +479,25 @@ public class RuntimeStyleActivity extends AppCompatActivity { mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(31, -100), 3)); Handler handler = new Handler(getMainLooper()); - handler.postDelayed(new Runnable() { - @Override - public void run() { - if (mapboxMap == null) { - return; - } + handler.postDelayed(() -> { + if (mapboxMap == null) { + return; + } - Timber.d("Styling filtered fill layer"); + Timber.d("Styling filtered fill layer"); - FillLayer states = (FillLayer) mapboxMap.getLayer("states"); + FillLayer states = (FillLayer) mapboxMap.getLayer("states"); - if (states != null) { - states.setFilter(eq("name", "Texas")); - states.setFillOpacityTransition(new TransitionOptions(2500, 0)); - states.setFillColorTransition(new TransitionOptions(2500, 0)); - states.setProperties( - fillColor(Color.RED), - fillOpacity(0.25f) - ); - } else { - Toast.makeText(RuntimeStyleActivity.this, "No states layer in this style", Toast.LENGTH_SHORT).show(); - } + if (states != null) { + states.setFilter(eq("name", "Texas")); + states.setFillOpacityTransition(new TransitionOptions(2500, 0)); + states.setFillColorTransition(new TransitionOptions(2500, 0)); + states.setProperties( + fillColor(Color.RED), + fillOpacity(0.25f) + ); + } else { + Toast.makeText(RuntimeStyleActivity.this, "No states layer in this style", Toast.LENGTH_SHORT).show(); } }, 2000); } @@ -529,28 +507,25 @@ public class RuntimeStyleActivity extends AppCompatActivity { mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40, -97), 5)); Handler handler = new Handler(getMainLooper()); - handler.postDelayed(new Runnable() { - @Override - public void run() { - if (mapboxMap == null) { - return; - } + handler.postDelayed(() -> { + if (mapboxMap == null) { + return; + } - Timber.d("Styling filtered line layer"); + Timber.d("Styling filtered line layer"); - LineLayer counties = (LineLayer) mapboxMap.getLayer("counties"); + LineLayer counties = (LineLayer) mapboxMap.getLayer("counties"); - if (counties != null) { - counties.setFilter(eq("NAME10", "Washington")); + if (counties != null) { + counties.setFilter(eq("NAME10", "Washington")); - counties.setProperties( - lineColor(Color.RED), - lineOpacity(0.75f), - lineWidth(5f) - ); - } else { - Toast.makeText(RuntimeStyleActivity.this, "No counties layer in this style", Toast.LENGTH_SHORT).show(); - } + counties.setProperties( + lineColor(Color.RED), + lineOpacity(0.75f), + lineWidth(5f) + ); + } else { + Toast.makeText(RuntimeStyleActivity.this, "No counties layer in this style", Toast.LENGTH_SHORT).show(); } }, 2000); } @@ -560,27 +535,24 @@ public class RuntimeStyleActivity extends AppCompatActivity { mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(40, -97), 5)); Handler handler = new Handler(getMainLooper()); - handler.postDelayed(new Runnable() { - @Override - public void run() { - if (mapboxMap == null) { - return; - } + handler.postDelayed(() -> { + if (mapboxMap == null) { + return; + } - Timber.d("Styling numeric fill layer"); + Timber.d("Styling numeric fill layer"); - FillLayer regions = (FillLayer) mapboxMap.getLayer("regions"); + FillLayer regions = (FillLayer) mapboxMap.getLayer("regions"); - if (regions != null) { - regions.setFilter(all(gte("HRRNUM", 200), lt("HRRNUM", 300))); + if (regions != null) { + regions.setFilter(all(gte("HRRNUM", 200), lt("HRRNUM", 300))); - regions.setProperties( - fillColor(Color.BLUE), - fillOpacity(0.5f) - ); - } else { - Toast.makeText(RuntimeStyleActivity.this, "No regions layer in this style", Toast.LENGTH_SHORT).show(); - } + regions.setProperties( + fillColor(Color.BLUE), + fillOpacity(0.5f) + ); + } else { + Toast.makeText(RuntimeStyleActivity.this, "No regions layer in this style", Toast.LENGTH_SHORT).show(); } }, 2000); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTestActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTestActivity.java index 910233accf..53f0870d90 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTestActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTestActivity.java @@ -5,7 +5,6 @@ import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -24,12 +23,7 @@ public class RuntimeStyleTestActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap mapboxMap) { - RuntimeStyleTestActivity.this.mapboxMap = mapboxMap; - } - }); + mapView.getMapAsync(mapboxMap -> RuntimeStyleTestActivity.this.mapboxMap = mapboxMap); } public MapboxMap getMapboxMap() { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTimingTestActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTimingTestActivity.java index 5057578731..e51a7ec8a0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTimingTestActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleTimingTestActivity.java @@ -6,7 +6,6 @@ import android.support.v7.app.AppCompatActivity; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.CircleLayer; import com.mapbox.mapboxsdk.style.sources.VectorSource; import com.mapbox.mapboxsdk.testapp.R; @@ -32,23 +31,20 @@ public class RuntimeStyleTimingTestActivity extends AppCompatActivity { // Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap mapboxMap) { - RuntimeStyleTimingTestActivity.this.mapboxMap = mapboxMap; - VectorSource museums = new VectorSource("museums_source", "mapbox://mapbox.2opop9hr"); - mapboxMap.addSource(museums); - - CircleLayer museumsLayer = new CircleLayer("museums", "museums_source"); - museumsLayer.setSourceLayer("museum-cusco"); - museumsLayer.setProperties( - visibility(VISIBLE), - circleRadius(8f), - circleColor(Color.argb(1, 55, 148, 179)) - ); - - mapboxMap.addLayer(museumsLayer); - } + mapView.getMapAsync(mapboxMap -> { + RuntimeStyleTimingTestActivity.this.mapboxMap = mapboxMap; + VectorSource museums = new VectorSource("museums_source", "mapbox://mapbox.2opop9hr"); + mapboxMap.addSource(museums); + + CircleLayer museumsLayer = new CircleLayer("museums", "museums_source"); + museumsLayer.setSourceLayer("museum-cusco"); + museumsLayer.setProperties( + visibility(VISIBLE), + circleRadius(8f), + circleColor(Color.argb(1, 55, 148, 179)) + ); + + mapboxMap.addLayer(museumsLayer); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java index 49015ec1e9..d2a46c63ae 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java @@ -3,16 +3,13 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; -import android.view.View; import android.widget.Toast; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.utils.ResourceUtils; @@ -39,29 +36,16 @@ public class StyleFileActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_file); - fab.setColorFilter(ContextCompat.getColor(StyleFileActivity.this, R.color.primary)); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new CreateStyleFileTask(view.getContext(), mapboxMap).execute(); - } - }); - - FloatingActionButton fabStyleJson = (FloatingActionButton) findViewById(R.id.fab_style_json); - fabStyleJson.setColorFilter(ContextCompat.getColor(StyleFileActivity.this, R.color.primary)); - fabStyleJson.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new LoadStyleFileTask(view.getContext(), mapboxMap).execute(); - } - }); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_file); + fab.setColorFilter(ContextCompat.getColor(StyleFileActivity.this, R.color.primary)); + fab.setOnClickListener(view -> new CreateStyleFileTask(view.getContext(), mapboxMap).execute()); + + FloatingActionButton fabStyleJson = (FloatingActionButton) findViewById(R.id.fab_style_json); + fabStyleJson.setColorFilter(ContextCompat.getColor(StyleFileActivity.this, R.color.primary)); + fabStyleJson.setOnClickListener(view -> new LoadStyleFileTask(view.getContext(), mapboxMap).execute()); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java index 6e9e45cfaa..1ef59db9b1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java @@ -16,10 +16,10 @@ import android.widget.TextView; import android.widget.Toast; import com.google.gson.GsonBuilder; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; +import com.mapbox.mapboxsdk.style.layers.Filter; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.style.sources.Source; @@ -38,8 +38,24 @@ import java.util.List; import timber.log.Timber; +import static com.mapbox.mapboxsdk.style.expressions.Expression.concat; +import static com.mapbox.mapboxsdk.style.expressions.Expression.division; +import static com.mapbox.mapboxsdk.style.expressions.Expression.downcase; +import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.expressions.Expression.literal; +import static com.mapbox.mapboxsdk.style.expressions.Expression.pi; +import static com.mapbox.mapboxsdk.style.expressions.Expression.product; +import static com.mapbox.mapboxsdk.style.expressions.Expression.upcase; +import static com.mapbox.mapboxsdk.style.layers.Property.ICON_ANCHOR_BOTTOM; +import static com.mapbox.mapboxsdk.style.layers.Property.TEXT_ANCHOR_TOP; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAllowOverlap; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAnchor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconImage; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconOffset; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconSize; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textAnchor; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textField; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.textSize; /** * Test activity showcasing using a symbol generator that generates Bitmaps from Android SDK Views. @@ -49,7 +65,10 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR private static final String SOURCE_ID = "com.mapbox.mapboxsdk.style.layers.symbol.source.id"; private static final String LAYER_ID = "com.mapbox.mapboxsdk.style.layers.symbol.layer.id"; private static final String FEATURE_ID = "brk_name"; - private static final String FEATURE_VALUE = "name_sort"; + private static final String FEATURE_RANK = "scalerank"; + private static final String FEATURE_NAME = "name_sort"; + private static final String FEATURE_TYPE = "type"; + private static final String FEATURE_REGION = "continent"; private MapView mapView; private MapboxMap mapboxMap; @@ -68,23 +87,20 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR public void onMapReady(final MapboxMap map) { mapboxMap = map; addSymbolClickListener(); - new LoadDataTask(map, SymbolGeneratorActivity.this).execute(); + new LoadDataTask(this).execute(); } private void addSymbolClickListener() { - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - PointF screenPoint = mapboxMap.getProjection().toScreenLocation(point); - List<Feature> features = mapboxMap.queryRenderedFeatures(screenPoint, LAYER_ID); - if (!features.isEmpty()) { - Feature feature = features.get(0); - Timber.v("Feature was clicked with data: %s", feature.toJson()); - Toast.makeText( - SymbolGeneratorActivity.this, - "hello from: " + feature.getStringProperty(FEATURE_VALUE), - Toast.LENGTH_LONG).show(); - } + mapboxMap.setOnMapClickListener(point -> { + PointF screenPoint = mapboxMap.getProjection().toScreenLocation(point); + List<Feature> features = mapboxMap.queryRenderedFeatures(screenPoint, LAYER_ID); + if (!features.isEmpty()) { + Feature feature = features.get(0); + Timber.v("Feature was clicked with data: %s", feature.toJson()); + Toast.makeText( + SymbolGeneratorActivity.this, + "hello from: " + feature.getStringProperty(FEATURE_NAME), + Toast.LENGTH_LONG).show(); } }); } @@ -100,6 +116,12 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR if (item.getItemId() == R.id.menu_action_icon_overlap) { SymbolLayer layer = mapboxMap.getLayerAs(LAYER_ID); layer.setProperties(iconAllowOverlap(!layer.getIconAllowOverlap().getValue())); + return true; + } else if (item.getItemId() == R.id.menu_action_filter) { + SymbolLayer layer = mapboxMap.getLayerAs(LAYER_ID); + layer.setFilter(Filter.eq(FEATURE_RANK, 1)); + //layer.setFilter(eq(get(FEATURE_RANK), 1)); + return true; } return super.onOptionsItemSelected(item); } @@ -178,19 +200,17 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR private static class LoadDataTask extends AsyncTask<Void, Void, FeatureCollection> { - private final MapboxMap mapboxMap; - private final Context context; + private SymbolGeneratorActivity activity; - LoadDataTask(MapboxMap mapboxMap, Context context) { - this.mapboxMap = mapboxMap; - this.context = context; + LoadDataTask(SymbolGeneratorActivity activity) { + this.activity = activity; } @Override protected FeatureCollection doInBackground(Void... params) { try { // read local geojson from raw folder - String tinyCountriesJson = ResourceUtils.readRawResource(context, R.raw.tiny_countries); + String tinyCountriesJson = ResourceUtils.readRawResource(activity, R.raw.tiny_countries); // convert geojson to a model FeatureCollection featureCollection = new GsonBuilder() @@ -204,30 +224,54 @@ public class SymbolGeneratorActivity extends AppCompatActivity implements OnMapR } } - @Override protected void onPostExecute(FeatureCollection featureCollection) { super.onPostExecute(featureCollection); - if (featureCollection == null) { + if (featureCollection == null || activity == null) { return; } - // add a geojson to the map - Source source = new GeoJsonSource(SOURCE_ID, featureCollection); - mapboxMap.addSource(source); - - // create layer use - mapboxMap.addLayer(new SymbolLayer(LAYER_ID, SOURCE_ID) - .withProperties( - iconImage("{" + FEATURE_ID + "}"), // { } is a token notation - iconAllowOverlap(false) - ) - ); - - new GenerateSymbolTask(mapboxMap, context).execute(featureCollection); + activity.onDataLoaded(featureCollection); } } + public void onDataLoaded(@NonNull FeatureCollection featureCollection) { + // add a geojson to the map + Source source = new GeoJsonSource(SOURCE_ID, featureCollection); + mapboxMap.addSource(source); + + // create layer use + mapboxMap.addLayer(new SymbolLayer(LAYER_ID, SOURCE_ID) + .withProperties( + + // icon configuration + iconImage(get(literal(FEATURE_ID))), + iconAllowOverlap(false), + iconSize( + division(get(literal(FEATURE_RANK)), literal(2)) + ), + iconAnchor(ICON_ANCHOR_BOTTOM), + iconOffset(new Float[] {0.0f, -5.0f}), + + // text field configuration + textField( + concat( + upcase(literal("a ")), + get(literal(FEATURE_TYPE)), + downcase(literal(" IN ")), + get(literal(FEATURE_REGION)) + ) + ), + textSize( + product(get(literal(FEATURE_RANK)), pi()) + ), + textAnchor(TEXT_ANCHOR_TOP) + ) + ); + + new GenerateSymbolTask(mapboxMap, this).execute(featureCollection); + } + private static class GenerateSymbolTask extends AsyncTask<FeatureCollection, Void, HashMap<String, Bitmap>> { private MapboxMap mapboxMap; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java index 82da905413..d89d71e604 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java @@ -15,7 +15,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.testapp.R; @@ -51,43 +50,40 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - - // Add a image for the makers - mapboxMap.addImage( - "my-marker-image", - BitmapFactory.decodeResource(SymbolLayerActivity.this.getResources(), - R.drawable.mapbox_marker_icon_default) - ); - - // Add a source - FeatureCollection markers = FeatureCollection.fromFeatures(new Feature[] { - Feature.fromGeometry(Point.fromCoordinates(new double[] {4.91638, 52.35673}), featureProperties("Marker 1")), - Feature.fromGeometry(Point.fromCoordinates(new double[] {4.91638, 52.34673}), featureProperties("Marker 2")) - }); - mapboxMap.addSource(new GeoJsonSource(MARKER_SOURCE, markers)); - - // Add the symbol-layer - mapboxMap.addLayer( - new SymbolLayer(MARKER_LAYER, MARKER_SOURCE) - .withProperties( - iconImage("my-marker-image"), - iconAllowOverlap(true), - textField("{title}"), - textColor(Color.RED), - textSize(10f) - ) - ); - - // Show - mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.35273, 4.91638), 14)); - - // Set a click-listener so we can manipulate the map - mapboxMap.setOnMapClickListener(SymbolLayerActivity.this); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + + // Add a image for the makers + mapboxMap.addImage( + "my-marker-image", + BitmapFactory.decodeResource(SymbolLayerActivity.this.getResources(), + R.drawable.mapbox_marker_icon_default) + ); + + // Add a source + FeatureCollection markers = FeatureCollection.fromFeatures(new Feature[] { + Feature.fromGeometry(Point.fromCoordinates(new double[] {4.91638, 52.35673}), featureProperties("Marker 1")), + Feature.fromGeometry(Point.fromCoordinates(new double[] {4.91638, 52.34673}), featureProperties("Marker 2")) + }); + mapboxMap.addSource(new GeoJsonSource(MARKER_SOURCE, markers)); + + // Add the symbol-layer + mapboxMap.addLayer( + new SymbolLayer(MARKER_LAYER, MARKER_SOURCE) + .withProperties( + iconImage("my-marker-image"), + iconAllowOverlap(true), + textField("{title}"), + textColor(Color.RED), + textSize(10f) + ) + ); + + // Show + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(52.35273, 4.91638), 14)); + + // Set a click-listener so we can manipulate the map + mapboxMap.setOnMapClickListener(SymbolLayerActivity.this); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/ZoomFunctionSymbolLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/ZoomFunctionSymbolLayerActivity.java index abfd7ae529..4a6e62ef7d 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/ZoomFunctionSymbolLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/ZoomFunctionSymbolLayerActivity.java @@ -2,16 +2,13 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.PointF; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import com.google.gson.JsonObject; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.style.layers.Property; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; @@ -64,14 +61,11 @@ public class ZoomFunctionSymbolLayerActivity extends AppCompatActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull final MapboxMap map) { - mapboxMap = map; - updateSource(); - addLayer(); - addMapClickListener(); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + updateSource(); + addLayer(); + addMapClickListener(); }); } @@ -131,19 +125,16 @@ public class ZoomFunctionSymbolLayerActivity extends AppCompatActivity { } private void addMapClickListener() { - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - PointF screenPoint = mapboxMap.getProjection().toScreenLocation(point); - List<Feature> featureList = mapboxMap.queryRenderedFeatures(screenPoint, LAYER_ID); - if (!featureList.isEmpty()) { - Feature feature = featureList.get(0); - boolean selectedNow = feature.getBooleanProperty(KEY_PROPERTY_SELECTED); - isSelected = !selectedNow; - updateSource(); - } else { - Timber.e("No features found"); - } + mapboxMap.setOnMapClickListener(point -> { + PointF screenPoint = mapboxMap.getProjection().toScreenLocation(point); + List<Feature> featureList = mapboxMap.queryRenderedFeatures(screenPoint, LAYER_ID); + if (!featureList.isEmpty()) { + Feature feature = featureList.get(0); + boolean selectedNow = feature.getBooleanProperty(KEY_PROPERTY_SELECTED); + isSelected = !selectedNow; + updateSource(); + } else { + Timber.e("No features found"); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java index dc95373663..1c023e5780 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewAnimationActivity.java @@ -11,7 +11,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import java.util.Locale; @@ -56,22 +55,19 @@ public class TextureViewAnimationActivity extends AppCompatActivity { private void setupMapView(Bundle savedInstanceState) { mapView = (MapView) findViewById(R.id.mapView); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap mapboxMap) { - TextureViewAnimationActivity.this.mapboxMap = mapboxMap; - - setFpsView(mapboxMap); - - // Animate the map view - ObjectAnimator animation = ObjectAnimator.ofFloat(mapView, "rotationY", 0.0f, 360f); - animation.setDuration(3600); - animation.setRepeatCount(ObjectAnimator.INFINITE); - animation.start(); - - // Start an animation on the map as well - flyTo(mapboxMap, 0, 14); - } + mapView.getMapAsync(mapboxMap -> { + TextureViewAnimationActivity.this.mapboxMap = mapboxMap; + + setFpsView(mapboxMap); + + // Animate the map view + ObjectAnimator animation = ObjectAnimator.ofFloat(mapView, "rotationY", 0.0f, 360f); + animation.setDuration(3600); + animation.setRepeatCount(ObjectAnimator.INFINITE); + animation.start(); + + // Start an animation on the map as well + flyTo(mapboxMap, 0, 14); }); } @@ -82,12 +78,9 @@ public class TextureViewAnimationActivity extends AppCompatActivity { new MapboxMap.CancelableCallback() { @Override public void onCancel() { - delayed = new Runnable() { - @Override - public void run() { - delayed = null; - flyTo(mapboxMap, place, zoom); - } + delayed = () -> { + delayed = null; + flyTo(mapboxMap, place, zoom); }; handler.postDelayed(delayed, 2000); } @@ -101,12 +94,7 @@ public class TextureViewAnimationActivity extends AppCompatActivity { private void setFpsView(MapboxMap mapboxMap) { final TextView fpsView = (TextView) findViewById(R.id.fpsView); - mapboxMap.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { - @Override - public void onFpsChanged(double fps) { - fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps)); - } - }); + mapboxMap.setOnFpsChangedListener(fps -> fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps))); } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewDebugModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewDebugModeActivity.java index 87f78cf2c8..007e6c7f2e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewDebugModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewDebugModeActivity.java @@ -11,12 +11,10 @@ import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; -import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; @@ -82,13 +80,10 @@ public class TextureViewDebugModeActivity extends AppCompatActivity implements O private void setupMapView(Bundle savedInstanceState) { mapView = (MapView) findViewById(R.id.mapView); - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(int change) { - if (change == MapView.DID_FINISH_LOADING_STYLE && mapboxMap != null) { - Timber.v("New style loaded with JSON: %s", mapboxMap.getStyleJson()); - setupNavigationView(mapboxMap.getLayers()); - } + mapView.addOnMapChangedListener(change -> { + if (change == MapView.DID_FINISH_LOADING_STYLE && mapboxMap != null) { + Timber.v("New style loaded with JSON: %s", mapboxMap.getStyleJson()); + setupNavigationView(mapboxMap.getLayers()); } }); @@ -110,25 +105,17 @@ public class TextureViewDebugModeActivity extends AppCompatActivity implements O private void setFpsView() { final TextView fpsView = (TextView) findViewById(R.id.fpsView); - mapboxMap.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { - @Override - public void onFpsChanged(double fps) { - fpsView.setText(String.format(Locale.US,"FPS: %4.2f", fps)); - } - }); + mapboxMap.setOnFpsChangedListener(fps -> fpsView.setText(String.format(Locale.US,"FPS: %4.2f", fps))); } private void setupNavigationView(List<Layer> layerList) { final LayerListAdapter adapter = new LayerListAdapter(this, layerList); ListView listView = (ListView) findViewById(R.id.listView); listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - Layer clickedLayer = adapter.getItem(position); - toggleLayerVisibility(clickedLayer); - closeNavigationView(); - } + listView.setOnItemClickListener((parent, view, position, id) -> { + Layer clickedLayer = adapter.getItem(position); + toggleLayerVisibility(clickedLayer); + closeNavigationView(); }); } @@ -148,44 +135,29 @@ public class TextureViewDebugModeActivity extends AppCompatActivity implements O private void setupZoomView() { final TextView textView = (TextView) findViewById(R.id.textZoom); - mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { - @Override - public void onCameraChange(CameraPosition position) { - textView.setText(String.format(getString(R.string.debug_zoom), position.zoom)); - } - }); + mapboxMap.setOnCameraChangeListener(position -> + textView.setText(String.format(getString(R.string.debug_zoom), position.zoom))); } private void setupDebugChangeView() { FloatingActionButton fabDebug = (FloatingActionButton) findViewById(R.id.fabDebug); - fabDebug.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - Timber.d("Debug FAB: isDebug Active? %s", mapboxMap.isDebugActive()); - mapboxMap.cycleDebugOptions(); - } + fabDebug.setOnClickListener(view -> { + if (mapboxMap != null) { + Timber.d("Debug FAB: isDebug Active? %s", mapboxMap.isDebugActive()); + mapboxMap.cycleDebugOptions(); } }); } private void setupStyleChangeView() { FloatingActionButton fabStyles = (FloatingActionButton) findViewById(R.id.fabStyles); - fabStyles.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - currentStyleIndex++; - if (currentStyleIndex == STYLES.length) { - currentStyleIndex = 0; - } - mapboxMap.setStyleUrl(STYLES[currentStyleIndex], new MapboxMap.OnStyleLoadedListener() { - @Override - public void onStyleLoaded(String style) { - Timber.d("Style loaded %s", style); - } - }); + fabStyles.setOnClickListener(view -> { + if (mapboxMap != null) { + currentStyleIndex++; + if (currentStyleIndex == STYLES.length) { + currentStyleIndex = 0; } + mapboxMap.setStyleUrl(STYLES[currentStyleIndex], style -> Timber.d("Style loaded %s", style)); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewResizeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewResizeActivity.java index 388774e6c8..788003d867 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewResizeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/textureview/TextureViewResizeActivity.java @@ -9,7 +9,6 @@ import android.view.View; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -39,25 +38,17 @@ public class TextureViewResizeActivity extends AppCompatActivity { private void setupMapView(Bundle savedInstanceState) { mapView = (MapView) findViewById(R.id.mapView); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap mapboxMap) { - TextureViewResizeActivity.this.mapboxMap = mapboxMap; - } - }); + mapView.getMapAsync(mapboxMap -> TextureViewResizeActivity.this.mapboxMap = mapboxMap); } private void setupFab() { FloatingActionButton fabDebug = (FloatingActionButton) findViewById(R.id.fabResize); - fabDebug.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapView != null) { - View parent = findViewById(R.id.coordinator_layout); - int width = parent.getWidth() == mapView.getWidth() ? parent.getWidth() / 2 : parent.getWidth(); - int height = parent.getHeight() == mapView.getHeight() ? parent.getHeight() / 2 : parent.getHeight(); - mapView.setLayoutParams(new CoordinatorLayout.LayoutParams(width, height)); - } + fabDebug.setOnClickListener(view -> { + if (mapView != null) { + View parent = findViewById(R.id.coordinator_layout); + int width = parent.getWidth() == mapView.getWidth() ? parent.getWidth() / 2 : parent.getWidth(); + int height = parent.getHeight() == mapView.getHeight() ? parent.getHeight() / 2 : parent.getHeight(); + mapView.setLayoutParams(new CoordinatorLayout.LayoutParams(width, height)); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java index 626f7c372d..ff2559089c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/CustomLocationEngineActivity.java @@ -4,12 +4,10 @@ import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; /** @@ -28,21 +26,15 @@ public class CustomLocationEngineActivity extends BaseLocationActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - mapboxMap.setLocationSource(MockLocationEngine.getInstance()); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + mapboxMap.setLocationSource(MockLocationEngine.getInstance()); }); locationToggleFab = (FloatingActionButton) findViewById(R.id.fabLocationToggle); - locationToggleFab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - enableLocation(!mapboxMap.isMyLocationEnabled()); - } + locationToggleFab.setOnClickListener(view -> { + if (mapboxMap != null) { + enableLocation(!mapboxMap.isMyLocationEnabled()); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java index df52ccf727..f4b54551bf 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MockLocationEngine.java @@ -21,12 +21,9 @@ public class MockLocationEngine extends LocationEngine { private static int counter; MockLocationEngine(Location start, Location end) { - locationAnimator = new LocationAnimator(start, end, new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - for (LocationEngineListener listener : locationListeners) { - listener.onLocationChanged((Location) animation.getAnimatedValue()); - } + locationAnimator = new LocationAnimator(start, end, animation -> { + for (LocationEngineListener listener : locationListeners) { + listener.onLocationChanged((Location) animation.getAnimatedValue()); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java index 62b4f4b987..000042306f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java @@ -14,7 +14,6 @@ import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.MapboxMapOptions; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.services.android.telemetry.location.LocationEngineListener; @@ -50,12 +49,9 @@ public class MyLocationDrawableActivity extends BaseLocationActivity implements parent.addView(mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - toggleGps(true); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + toggleGps(true); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java index 9dc8c1a607..89774dc507 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java @@ -15,7 +15,6 @@ import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.maps.TrackingSettings; import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings; import com.mapbox.mapboxsdk.testapp.R; @@ -37,80 +36,65 @@ public class MyLocationTintActivity extends BaseLocationActivity implements Loca mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - - // enable location updates - toggleGps(true); - - // add some padding - final MyLocationViewSettings myLocationViewSettings = mapboxMap.getMyLocationViewSettings(); - myLocationViewSettings.setPadding(0, 500, 0, 0); - - // enable tracking - TrackingSettings settings = mapboxMap.getTrackingSettings(); - settings.setDismissLocationTrackingOnGesture(false); - settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); - - // handle default button clicks - ViewUtils.attachClickListener( - MyLocationTintActivity.this, - R.id.default_user_dot_coloring_button, - new View.OnClickListener() { - @Override - public void onClick(View view) { - myLocationViewSettings.setAccuracyTintColor(ContextCompat.getColor( - MyLocationTintActivity.this, R.color.mapbox_blue)); - myLocationViewSettings.setForegroundTintColor(ContextCompat.getColor( - MyLocationTintActivity.this, R.color.mapbox_blue)); - myLocationViewSettings.setBackgroundTintColor(Color.WHITE); - } - }); - - // handle tint user dot button clicks - ViewUtils.attachClickListener( - MyLocationTintActivity.this, - R.id.tint_user_dot_button, - new View.OnClickListener() { - @Override - public void onClick(View view) { - myLocationViewSettings.setAccuracyTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); - myLocationViewSettings.setForegroundTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); - myLocationViewSettings.setBackgroundTintColor(Color.WHITE); - } - }); - - // handle tint accuracy ring button clicks - ViewUtils.attachClickListener( - MyLocationTintActivity.this, - R.id.user_accuracy_ring_tint_button, - new View.OnClickListener() { - @Override - public void onClick(View view) { - myLocationViewSettings.setAccuracyTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.accent)); - myLocationViewSettings.setForegroundTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapbox_blue)); - myLocationViewSettings.setBackgroundTintColor(Color.WHITE); - } - }); - - ViewUtils.attachClickListener( - MyLocationTintActivity.this, - R.id.user_dot_transparent_button, - new View.OnClickListener() { - @Override - public void onClick(View view) { - myLocationViewSettings.setForegroundTintColor(Color.TRANSPARENT); - myLocationViewSettings.setBackgroundTintColor(Color.TRANSPARENT); - } - } - ); - } + mapView.getMapAsync(map -> { + mapboxMap = map; + + // enable location updates + toggleGps(true); + + // add some padding + final MyLocationViewSettings myLocationViewSettings = mapboxMap.getMyLocationViewSettings(); + myLocationViewSettings.setPadding(0, 500, 0, 0); + + // enable tracking + TrackingSettings settings = mapboxMap.getTrackingSettings(); + settings.setDismissLocationTrackingOnGesture(false); + settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + + // handle default button clicks + ViewUtils.attachClickListener( + MyLocationTintActivity.this, + R.id.default_user_dot_coloring_button, + view -> { + myLocationViewSettings.setAccuracyTintColor(ContextCompat.getColor( + MyLocationTintActivity.this, R.color.mapbox_blue)); + myLocationViewSettings.setForegroundTintColor(ContextCompat.getColor( + MyLocationTintActivity.this, R.color.mapbox_blue)); + myLocationViewSettings.setBackgroundTintColor(Color.WHITE); + }); + + // handle tint user dot button clicks + ViewUtils.attachClickListener( + MyLocationTintActivity.this, + R.id.tint_user_dot_button, + view -> { + myLocationViewSettings.setAccuracyTintColor( + ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); + myLocationViewSettings.setForegroundTintColor( + ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); + myLocationViewSettings.setBackgroundTintColor(Color.WHITE); + }); + + // handle tint accuracy ring button clicks + ViewUtils.attachClickListener( + MyLocationTintActivity.this, + R.id.user_accuracy_ring_tint_button, + view -> { + myLocationViewSettings.setAccuracyTintColor( + ContextCompat.getColor(MyLocationTintActivity.this, R.color.accent)); + myLocationViewSettings.setForegroundTintColor( + ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapbox_blue)); + myLocationViewSettings.setBackgroundTintColor(Color.WHITE); + }); + + ViewUtils.attachClickListener( + MyLocationTintActivity.this, + R.id.user_dot_transparent_button, + view -> { + myLocationViewSettings.setForegroundTintColor(Color.TRANSPARENT); + myLocationViewSettings.setBackgroundTintColor(Color.TRANSPARENT); + } + ); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java index 718c10c7cb..ea3a6f14bc 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java @@ -2,11 +2,9 @@ package com.mapbox.mapboxsdk.testapp.activity.userlocation; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; -import android.view.View; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; import timber.log.Timber; @@ -27,20 +25,12 @@ public class MyLocationToggleActivity extends BaseLocationActivity { mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - } - }); + mapView.getMapAsync(map -> mapboxMap = map); locationToggleFab = (FloatingActionButton) findViewById(R.id.fabLocationToggle); - locationToggleFab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (mapboxMap != null) { - toggleGps(!mapboxMap.isMyLocationEnabled()); - } + locationToggleFab.setOnClickListener(view -> { + if (mapboxMap != null) { + toggleGps(!mapboxMap.isMyLocationEnabled()); } }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java index d910a19d5d..5ebe43e68c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java @@ -125,41 +125,35 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity implements bearingSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); setCheckBoxes(); - mapboxMap.setOnMyLocationTrackingModeChangeListener(new MapboxMap.OnMyLocationTrackingModeChangeListener() { - @Override - public void onMyLocationTrackingModeChange(@MyLocationTracking.Mode int myLocationTrackingMode) { - locationSpinner.setOnItemSelectedListener(null); - switch (myLocationTrackingMode) { - case MyLocationTracking.TRACKING_NONE: - locationSpinner.setSelection(TRACKING_NONE_INDEX); - break; - case MyLocationTracking.TRACKING_FOLLOW: - locationSpinner.setSelection(TRACKING_FOLLOW_INDEX); - break; - } - locationSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); + mapboxMap.setOnMyLocationTrackingModeChangeListener(myLocationTrackingMode -> { + locationSpinner.setOnItemSelectedListener(null); + switch (myLocationTrackingMode) { + case MyLocationTracking.TRACKING_NONE: + locationSpinner.setSelection(TRACKING_NONE_INDEX); + break; + case MyLocationTracking.TRACKING_FOLLOW: + locationSpinner.setSelection(TRACKING_FOLLOW_INDEX); + break; } + locationSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); }); - mapboxMap.setOnMyBearingTrackingModeChangeListener(new MapboxMap.OnMyBearingTrackingModeChangeListener() { - @Override - public void onMyBearingTrackingModeChange(@MyBearingTracking.Mode int myBearingTrackingMode) { - bearingSpinner.setOnItemSelectedListener(null); - switch (myBearingTrackingMode) { - case MyBearingTracking.NONE: - bearingSpinner.setSelection(BEARING_NONE_INDEX); - break; - - case MyBearingTracking.GPS: - bearingSpinner.setSelection(BEARING_GPS_INDEX); - break; - - case MyBearingTracking.COMPASS: - bearingSpinner.setSelection(BEARING_COMPASS_INDEX); - break; - } - bearingSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); + mapboxMap.setOnMyBearingTrackingModeChangeListener(myBearingTrackingMode -> { + bearingSpinner.setOnItemSelectedListener(null); + switch (myBearingTrackingMode) { + case MyBearingTracking.NONE: + bearingSpinner.setSelection(BEARING_NONE_INDEX); + break; + + case MyBearingTracking.GPS: + bearingSpinner.setSelection(BEARING_GPS_INDEX); + break; + + case MyBearingTracking.COMPASS: + bearingSpinner.setSelection(BEARING_COMPASS_INDEX); + break; } + bearingSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); }); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/adapter/FeatureSectionAdapter.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/adapter/FeatureSectionAdapter.java index 1d89f89f08..65e2b4f185 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/adapter/FeatureSectionAdapter.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/adapter/FeatureSectionAdapter.java @@ -14,7 +14,6 @@ import android.widget.TextView; import com.mapbox.mapboxsdk.testapp.utils.FontCache; import java.util.Arrays; -import java.util.Comparator; public class FeatureSectionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { @@ -126,14 +125,9 @@ public class FeatureSectionAdapter extends RecyclerView.Adapter<RecyclerView.Vie public void setSections(Section[] sections) { this.sections.clear(); - Arrays.sort(sections, new Comparator<Section>() { - @Override - public int compare(Section section, Section section1) { - return (section.firstPosition == section1.firstPosition) - ? 0 - : ((section.firstPosition < section1.firstPosition) ? -1 : 1); - } - }); + Arrays.sort(sections, (section, section1) -> (section.firstPosition == section1.firstPosition) + ? 0 + : ((section.firstPosition < section1.firstPosition) ? -1 : 1)); int offset = 0; for (Section section : sections) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineDownloadRegionDialog.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineDownloadRegionDialog.java index c4aa934139..89096a0a6b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineDownloadRegionDialog.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineDownloadRegionDialog.java @@ -2,18 +2,16 @@ package com.mapbox.mapboxsdk.testapp.model.other; import android.app.Activity; import android.app.Dialog; -import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; - -import timber.log.Timber; - import android.widget.EditText; import com.mapbox.mapboxsdk.testapp.R; +import timber.log.Timber; + public class OfflineDownloadRegionDialog extends DialogFragment { public interface DownloadRegionDialogListener { @@ -39,18 +37,10 @@ public class OfflineDownloadRegionDialog extends DialogFragment { builder.setTitle("Choose a name for the region") .setIcon(R.drawable.ic_airplanemode_active_black) .setView(regionNameEdit) - .setPositiveButton("Start", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String regionName = regionNameEdit.getText().toString(); - listener.onDownloadRegionDialogPositiveClick(regionName); - } - }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Timber.d("Download cancelled."); - } - }); + .setPositiveButton("Start", (dialog, which) -> { + String regionName = regionNameEdit.getText().toString(); + listener.onDownloadRegionDialogPositiveClick(regionName); + }).setNegativeButton("Cancel", (dialog, which) -> Timber.d("Download cancelled.")); return builder.create(); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineListRegionsDialog.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineListRegionsDialog.java index 76f07ba526..dbaae589ef 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineListRegionsDialog.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/other/OfflineListRegionsDialog.java @@ -1,18 +1,17 @@ package com.mapbox.mapboxsdk.testapp.model.other; import android.app.Dialog; -import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; -import timber.log.Timber; - import com.mapbox.mapboxsdk.testapp.R; import java.util.ArrayList; +import timber.log.Timber; + public class OfflineListRegionsDialog extends DialogFragment { public static final String ITEMS = "ITEMS"; @@ -29,18 +28,8 @@ public class OfflineListRegionsDialog extends DialogFragment { builder.setTitle("List of offline regions") .setIcon(R.drawable.ic_airplanemode_active_black) - .setItems(items, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Timber.d("Selected item: %s", which); - } - }) - .setPositiveButton("Accept", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Timber.d("Dialog dismissed"); - } - }); + .setItems(items, (dialog, which) -> Timber.d("Selected item: %s", which)) + .setPositiveButton("Accept", (dialog, which) -> Timber.d("Dialog dismissed")); return builder.create(); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/FontCache.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/FontCache.java index 10ecf43bd3..a4352d0b1c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/FontCache.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/FontCache.java @@ -3,10 +3,10 @@ package com.mapbox.mapboxsdk.testapp.utils; import android.content.Context; import android.graphics.Typeface; -import timber.log.Timber; - import java.util.Hashtable; +import timber.log.Timber; + public class FontCache { private static Hashtable<String, Typeface> fontCache = new Hashtable<>(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/GeoParseUtil.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/GeoParseUtil.java index 0d21fd2c71..97f70e33bb 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/GeoParseUtil.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/GeoParseUtil.java @@ -2,12 +2,11 @@ package com.mapbox.mapboxsdk.testapp.utils; import android.content.Context; import android.text.TextUtils; - import com.mapbox.mapboxsdk.geometry.LatLng; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; +import com.mapbox.services.commons.geojson.Feature; +import com.mapbox.services.commons.geojson.FeatureCollection; +import com.mapbox.services.commons.geojson.Point; +import com.mapbox.services.commons.models.Position; import java.io.BufferedReader; import java.io.IOException; @@ -29,34 +28,13 @@ public class GeoParseUtil { return readAll(rd); } - public static List<LatLng> parseGeoJsonCoordinates(String geojsonStr) throws JSONException { + public static List<LatLng> parseGeoJsonCoordinates(String geojsonStr) { List<LatLng> latLngs = new ArrayList<>(); - JSONObject jsonObject = new JSONObject(geojsonStr); - JSONArray features = jsonObject.getJSONArray("features"); - int featureLength = features.length(); - for (int j = 0; j < featureLength; ++j) { - JSONObject feature = features.getJSONObject(j); - JSONObject geometry = feature.getJSONObject("geometry"); - String type = geometry.getString("type"); - JSONArray coordinates; - if (type.equals("Polygon")) { - coordinates = geometry.getJSONArray("coordinates").getJSONArray(0); - } else { - coordinates = geometry.getJSONArray("coordinates"); - } - int len = coordinates.length(); - for (int i = 0; i < len; ++i) { - if (coordinates.get(i) instanceof JSONArray) { - JSONArray coord = coordinates.getJSONArray(i); - double lng = coord.getDouble(0); - double lat = coord.getDouble(1); - latLngs.add(new LatLng(lat, lng)); - } else { - double lng = coordinates.getDouble(0); - double lat = coordinates.getDouble(1); - latLngs.add(new LatLng(lat, lng)); - break; - } + FeatureCollection featureCollection = FeatureCollection.fromJson(geojsonStr); + for (Feature feature : featureCollection.getFeatures()) { + if (feature.getGeometry() instanceof Point) { + Position point = ((Point) feature.getGeometry()).getCoordinates(); + latLngs.add(new LatLng(point.getLatitude(), point.getLongitude())); } } return latLngs; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/OfflineUtils.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/OfflineUtils.java index 6220dc7e69..d4ec95ce5c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/OfflineUtils.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/OfflineUtils.java @@ -2,9 +2,10 @@ package com.mapbox.mapboxsdk.testapp.utils; import android.support.annotation.NonNull; -import timber.log.Timber; +import com.google.gson.Gson; +import com.google.gson.JsonObject; -import org.json.JSONObject; +import timber.log.Timber; import static com.mapbox.mapboxsdk.testapp.activity.offline.OfflineActivity.JSON_CHARSET; import static com.mapbox.mapboxsdk.testapp.activity.offline.OfflineActivity.JSON_FIELD_REGION_NAME; @@ -14,24 +15,22 @@ public class OfflineUtils { public static String convertRegionName(@NonNull byte[] metadata) { try { String json = new String(metadata, JSON_CHARSET); - JSONObject jsonObject = new JSONObject(json); - return jsonObject.getString(JSON_FIELD_REGION_NAME); + JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class); + return jsonObject.get(JSON_FIELD_REGION_NAME).getAsString(); } catch (Exception exception) { return null; } } public static byte[] convertRegionName(String regionName) { - byte[] metadata = null; try { - JSONObject jsonObject = new JSONObject(); - jsonObject.put(JSON_FIELD_REGION_NAME, regionName); - String json = jsonObject.toString(); - metadata = json.getBytes(JSON_CHARSET); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty(JSON_FIELD_REGION_NAME, regionName); + return jsonObject.toString().getBytes(JSON_CHARSET); } catch (Exception exception) { Timber.e(exception, "Failed to encode metadata: "); } - return metadata; + return null; } } |