diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream')
2 files changed, 206 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java new file mode 100644 index 0000000000..49a509432a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MainActivity.java @@ -0,0 +1,94 @@ +package com.mapbox.mapboxsdk.downstream; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import com.google.gson.JsonObject; +import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.geometry.LatLngBounds; +import com.mapbox.mapboxsdk.log.Logger; +import com.mapbox.mapboxsdk.maps.Style; +import com.mapbox.mapboxsdk.offline.OfflineManager; +import com.mapbox.mapboxsdk.offline.OfflineRegion; +import com.mapbox.mapboxsdk.offline.OfflineRegionError; +import com.mapbox.mapboxsdk.offline.OfflineRegionStatus; +import com.mapbox.mapboxsdk.offline.OfflineTilePyramidRegionDefinition; +import timber.log.Timber; + +public class MainActivity extends AppCompatActivity { + + private final static String TAG = "Main"; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_donwload); + + Mapbox.getInstance(this, getString(R.string.mapbox_access_token)); + + OfflineManager offlineManager = OfflineManager.getInstance(this); + + LatLngBounds latLngBounds = new LatLngBounds.Builder() + .include(new LatLng(50.849772, 5.688173)) + .include(new LatLng(50.843630, 5.710903)) + .build(); + + float pixelRatio = getResources().getDisplayMetrics().density; + + OfflineTilePyramidRegionDefinition definition = new OfflineTilePyramidRegionDefinition( + Style.MAPBOX_STREETS, latLngBounds, 16, 20, pixelRatio + ); + + offlineManager.createOfflineRegion(definition, convertRegionName("test"), new OfflineManager.CreateOfflineRegionCallback() { + @Override + public void onCreate(OfflineRegion offlineRegion) { + offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE); + offlineRegion.setObserver(new OfflineRegion.OfflineRegionObserver() { + @Override + public void onStatusChanged(OfflineRegionStatus status) { + if (status.isComplete()) { + View button = findViewById(R.id.button); + button.setVisibility(View.VISIBLE); + button.setOnClickListener(v -> { + Intent intent = new Intent(v.getContext(), MapActivity.class); + startActivity(intent); + }); + } + } + + @Override + public void onError(OfflineRegionError error) { + Logger.e(TAG, error.getMessage()); + } + + @Override + public void mapboxTileCountLimitExceeded(long limit) { + + } + }); + } + + @Override + public void onError(String error) { + Logger.e(TAG, error); + } + }); + } + + public static final String JSON_CHARSET = "UTF-8"; + public static final String JSON_FIELD_REGION_NAME = "FIELD_REGION_NAME"; + + public static byte[] convertRegionName(String regionName) { + try { + 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 null; + } +}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MapActivity.java b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MapActivity.java new file mode 100644 index 0000000000..47309c3fc5 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKDownstreamApp/src/main/java/com/mapbox/mapboxsdk/downstream/MapActivity.java @@ -0,0 +1,112 @@ +package com.mapbox.mapboxsdk.downstream; + +import android.animation.ValueAnimator; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.TextView; +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.Style; +import com.mapbox.mapboxsdk.plugins.annotation.Symbol; +import com.mapbox.mapboxsdk.plugins.annotation.SymbolManager; +import com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions; +import com.mapbox.mapboxsdk.utils.BitmapUtils; +import timber.log.Timber; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Activity showcasing adding symbols using the annotation plugin + */ +public class MapActivity extends AppCompatActivity { + + private static final String ID_ICON = "airport"; + + private MapView mapView; + private SymbolManager symbolManager; + private Symbol symbol; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + mapView = findViewById(R.id.mapView); + mapView.onCreate(savedInstanceState); + mapView.getMapAsync(mapboxMap -> mapboxMap.setStyle(Style.MAPBOX_STREETS, style -> { + findViewById(R.id.fabStyles).setOnClickListener(v -> mapboxMap.setStyle(Style.DARK)); + + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(50.846317, 5.698414), 17)); + + style.addImage(ID_ICON, BitmapUtils.getBitmapFromDrawable(getResources().getDrawable(R.drawable.mapbox_marker_icon_default)), false); + + // create symbol manager + symbolManager = new SymbolManager(mapView, mapboxMap, style); + symbolManager.setIconAllowOverlap(true); + symbolManager.setTextAllowOverlap(true); + + // create a symbol + SymbolOptions symbolOptions = new SymbolOptions() + .withLatLng(new LatLng(50.846202, 5.69738)) + .withIconImage(ID_ICON) + .withTextFont(new String[]{"Open Sans Regular","Arial Unicode MS Regular"}) + .withIconSize(1.3f) + .withTextField("Hello World") + .withZIndex(10); + symbol = symbolManager.create(symbolOptions); + Timber.e(symbol.toString()); + + + })); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + protected void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.onPause(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mapView.onLowMemory(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + + if (symbolManager != null) { + symbolManager.onDestroy(); + } + + mapView.onDestroy(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } +}
\ No newline at end of file |