[android] - make snapshot logo optional
This commit is contained in:
@@ -15,14 +15,16 @@ public class MapSnapshot {
|
||||
private long nativePtr = 0;
|
||||
private Bitmap bitmap;
|
||||
private String[] attributions;
|
||||
private boolean showLogo;
|
||||
|
||||
/**
|
||||
* Created from native side
|
||||
*/
|
||||
private MapSnapshot(long nativePtr, Bitmap bitmap, String[] attributions) {
|
||||
private MapSnapshot(long nativePtr, Bitmap bitmap, String[] attributions, boolean showLogo) {
|
||||
this.nativePtr = nativePtr;
|
||||
this.bitmap = bitmap;
|
||||
this.attributions = attributions;
|
||||
this.showLogo = showLogo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -47,6 +49,13 @@ public class MapSnapshot {
|
||||
return attributions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Flag indicating to show the Mapbox logo.
|
||||
*/
|
||||
boolean isShowLogo() {
|
||||
return showLogo;
|
||||
}
|
||||
|
||||
// Unused, needed for peer binding
|
||||
private native void initialize();
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ public class MapSnapshotter {
|
||||
private String styleUrl = Style.MAPBOX_STREETS;
|
||||
private LatLngBounds region;
|
||||
private CameraPosition cameraPosition;
|
||||
private boolean showLogo = true;
|
||||
|
||||
/**
|
||||
* @param width the width of the image
|
||||
@@ -123,6 +124,15 @@ public class MapSnapshotter {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param showLogo The flag indicating to show the Mapbox logo.
|
||||
* @return the mutated {@link Options}
|
||||
*/
|
||||
public Options withLogo(boolean showLogo) {
|
||||
this.showLogo = showLogo;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the width of the image
|
||||
*/
|
||||
@@ -182,7 +192,7 @@ public class MapSnapshotter {
|
||||
|
||||
nativeInitialize(this, fileSource, options.pixelRatio, options.width,
|
||||
options.height, options.styleUrl, options.region, options.cameraPosition,
|
||||
programCacheDir);
|
||||
options.showLogo, programCacheDir);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -266,7 +276,9 @@ public class MapSnapshotter {
|
||||
*/
|
||||
protected void onSnapshotReady(MapSnapshot snapshot) {
|
||||
if (callback != null) {
|
||||
addOverlay(snapshot.getBitmap());
|
||||
if (snapshot.isShowLogo()) {
|
||||
addOverlay(snapshot.getBitmap());
|
||||
}
|
||||
callback.onSnapshotReady(snapshot);
|
||||
reset();
|
||||
}
|
||||
@@ -294,7 +306,7 @@ public class MapSnapshotter {
|
||||
FileSource fileSource, float pixelRatio,
|
||||
int width, int height, String styleUrl,
|
||||
LatLngBounds region, CameraPosition position,
|
||||
String programCacheDir);
|
||||
boolean showLogo, String programCacheDir);
|
||||
|
||||
protected native void nativeStart();
|
||||
|
||||
|
||||
@@ -27,14 +27,15 @@ jni::Object<MapSnapshot> MapSnapshot::New(JNIEnv& env,
|
||||
PremultipliedImage&& image,
|
||||
float pixelRatio,
|
||||
std::vector<std::string> attributions,
|
||||
bool showLogo,
|
||||
mbgl::MapSnapshotter::PointForFn pointForFn) {
|
||||
// Create the bitmap
|
||||
auto bitmap = Bitmap::CreateBitmap(env, std::move(image));
|
||||
|
||||
// Create the Mapsnapshot peers
|
||||
static auto constructor = javaClass.GetConstructor<jni::jlong, jni::Object<Bitmap>, jni::Array<jni::String>>(env);
|
||||
static auto constructor = javaClass.GetConstructor<jni::jlong, jni::Object<Bitmap>, jni::Array<jni::String>, jni::jboolean>(env);
|
||||
auto nativePeer = std::make_unique<MapSnapshot>(pixelRatio, pointForFn);
|
||||
return javaClass.New(env, constructor, reinterpret_cast<jlong>(nativePeer.release()), bitmap, jni::Make<jni::Array<jni::String>>(env, attributions));
|
||||
return javaClass.New(env, constructor, reinterpret_cast<jlong>(nativePeer.release()), bitmap, jni::Make<jni::Array<jni::String>>(env, attributions), (jni::jboolean) showLogo);
|
||||
}
|
||||
|
||||
jni::Class<MapSnapshot> MapSnapshot::javaClass;
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
PremultipliedImage&& image,
|
||||
float pixelRatio,
|
||||
std::vector<std::string> attributions,
|
||||
bool showLogo,
|
||||
PointForFn pointForFn);
|
||||
|
||||
MapSnapshot(jni::JNIEnv&) {};
|
||||
|
||||
@@ -22,6 +22,7 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env,
|
||||
jni::String styleURL,
|
||||
jni::Object<LatLngBounds> region,
|
||||
jni::Object<CameraPosition> position,
|
||||
jni::jboolean _showLogo,
|
||||
jni::String _programCacheDir)
|
||||
: javaPeer(SeizeGenericWeakRef(_env, jni::Object<MapSnapshotter>(jni::NewWeakGlobalRef(_env, _obj.Get()).release())))
|
||||
, pixelRatio(_pixelRatio)
|
||||
@@ -41,6 +42,8 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env,
|
||||
bounds = LatLngBounds::getLatLngBounds(_env, region);
|
||||
}
|
||||
|
||||
showLogo = _showLogo;
|
||||
|
||||
// Create the core snapshotter
|
||||
snapshotter = std::make_unique<mbgl::MapSnapshotter>(fileSource,
|
||||
*threadPool,
|
||||
@@ -70,7 +73,7 @@ void MapSnapshotter::start(JNIEnv&) {
|
||||
javaPeer->Call(*_env, onSnapshotFailed, jni::Make<jni::String>(*_env, util::toString(err)));
|
||||
} else {
|
||||
// Create the wrapper
|
||||
auto mapSnapshot = android::MapSnapshot::New(*_env, std::move(image), pixelRatio, attributions, pointForFn);
|
||||
auto mapSnapshot = android::MapSnapshot::New(*_env, std::move(image), pixelRatio, attributions, showLogo, pointForFn);
|
||||
|
||||
// invoke callback
|
||||
static auto onSnapshotReady = javaClass.GetMethod<void (jni::Object<MapSnapshot>)>(*_env, "onSnapshotReady");
|
||||
@@ -117,7 +120,7 @@ void MapSnapshotter::registerNative(jni::JNIEnv& env) {
|
||||
|
||||
// Register the peer
|
||||
jni::RegisterNativePeer<MapSnapshotter>(env, MapSnapshotter::javaClass, "nativePtr",
|
||||
std::make_unique<MapSnapshotter, JNIEnv&, jni::Object<MapSnapshotter>, jni::Object<FileSource>, jni::jfloat, jni::jint, jni::jint, jni::String, jni::Object<LatLngBounds>, jni::Object<CameraPosition>, jni::String>,
|
||||
std::make_unique<MapSnapshotter, JNIEnv&, jni::Object<MapSnapshotter>, jni::Object<FileSource>, jni::jfloat, jni::jint, jni::jint, jni::String, jni::Object<LatLngBounds>, jni::Object<CameraPosition>, jni::jboolean, jni::String>,
|
||||
"nativeInitialize",
|
||||
"finalize",
|
||||
METHOD(&MapSnapshotter::setStyleUrl, "setStyleUrl"),
|
||||
|
||||
@@ -36,6 +36,7 @@ public:
|
||||
jni::String styleURL,
|
||||
jni::Object<LatLngBounds> region,
|
||||
jni::Object<CameraPosition> position,
|
||||
jni::jboolean showLogo,
|
||||
jni::String programCacheDir);
|
||||
|
||||
~MapSnapshotter();
|
||||
@@ -59,6 +60,7 @@ private:
|
||||
GenericUniqueWeakObject<MapSnapshotter> javaPeer;
|
||||
|
||||
float pixelRatio;
|
||||
bool showLogo;
|
||||
|
||||
std::shared_ptr<mbgl::ThreadPool> threadPool;
|
||||
std::unique_ptr<Actor<mbgl::MapSnapshotter::Callback>> snapshotCallback;
|
||||
|
||||
Reference in New Issue
Block a user