[android] #3304 - refactor SpriteFactory to IconFactory, changed all the sprite names to icon for convention

This commit is contained in:
Tobrun
2015-12-20 11:57:36 +01:00
parent 70ae0cc172
commit f3de446bd9
15 changed files with 150 additions and 150 deletions

View File

@@ -2,11 +2,11 @@ package com.mapbox.mapboxsdk.annotations;
import android.graphics.Bitmap;
public final class Sprite {
public final class Icon {
private Bitmap mBitmap;
private String mId;
Sprite(String id, Bitmap bitmap) {
Icon(String id, Bitmap bitmap) {
mId = id;
mBitmap = bitmap;
}
@@ -24,10 +24,10 @@ public final class Sprite {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Sprite sprite = (Sprite) o;
Icon icon = (Icon) o;
if (!mBitmap.equals(sprite.mBitmap)) return false;
return mId.equals(sprite.mId);
if (!mBitmap.equals(icon.mBitmap)) return false;
return mId.equals(icon.mId);
}

View File

@@ -15,32 +15,32 @@ import android.util.DisplayMetrics;
import android.view.WindowManager;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.exceptions.TooManySpritesException;
import com.mapbox.mapboxsdk.exceptions.TooManyIconsException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public final class SpriteFactory {
public final class IconFactory {
private static final String SPRITE_ID_PREFIX = "com.mapbox.sprites.sprite_";
private static final String ICON_ID_PREFIX = "com.mapbox.icons.icon_";
private Context mContext;
private static SpriteFactory sInstance;
private Sprite mDefaultMarker;
private static IconFactory sInstance;
private Icon mDefaultMarker;
private BitmapFactory.Options mOptions;
private int mNextId = 0;
public static synchronized SpriteFactory getInstance(@NonNull Context context) {
public static synchronized IconFactory getInstance(@NonNull Context context) {
if (sInstance == null) {
sInstance = new SpriteFactory(context.getApplicationContext());
sInstance = new IconFactory(context.getApplicationContext());
}
return sInstance;
}
private SpriteFactory(@NonNull Context context) {
private IconFactory(@NonNull Context context) {
mContext = context;
DisplayMetrics realMetrics = null;
DisplayMetrics metrics = new DisplayMetrics();
@@ -61,21 +61,21 @@ public final class SpriteFactory {
}
}
public Sprite fromBitmap(@NonNull Bitmap bitmap) {
public Icon fromBitmap(@NonNull Bitmap bitmap) {
if (mNextId < 0) {
throw new TooManySpritesException();
throw new TooManyIconsException();
}
String id = SPRITE_ID_PREFIX + ++mNextId;
return new Sprite(id, bitmap);
String id = ICON_ID_PREFIX + ++mNextId;
return new Icon(id, bitmap);
}
public Sprite fromDrawable(@NonNull Drawable drawable) {
public Icon fromDrawable(@NonNull Drawable drawable) {
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
return fromDrawable(drawable, width, height);
}
public Sprite fromDrawable(@NonNull Drawable drawable, int width, int height) {
public Icon fromDrawable(@NonNull Drawable drawable, int width, int height) {
if ((width < 0) || (height < 0)) {
return null;
}
@@ -90,7 +90,7 @@ public final class SpriteFactory {
return fromBitmap(bitmap);
}
public Sprite fromResource(@DrawableRes int resourceId) {
public Icon fromResource(@DrawableRes int resourceId) {
Drawable drawable = ContextCompat.getDrawable(mContext, resourceId);
Bitmap bitmap;
if (drawable instanceof BitmapDrawable) {
@@ -110,19 +110,19 @@ public final class SpriteFactory {
return fromBitmap(bitmap);
}
public Sprite defaultMarker() {
public Icon defaultMarker() {
if (mDefaultMarker == null) {
mDefaultMarker = fromResource(R.drawable.default_marker);
}
return mDefaultMarker;
}
private Sprite fromInputStream(@NonNull InputStream is) {
private Icon fromInputStream(@NonNull InputStream is) {
Bitmap bitmap = BitmapFactory.decodeStream(is, null, mOptions);
return fromBitmap(bitmap);
}
public Sprite fromAsset(@NonNull String assetName) {
public Icon fromAsset(@NonNull String assetName) {
InputStream is;
try {
is = mContext.getAssets().open(assetName);
@@ -132,12 +132,12 @@ public final class SpriteFactory {
return fromInputStream(is);
}
public Sprite fromPath(@NonNull String absolutePath) {
public Icon fromPath(@NonNull String absolutePath) {
Bitmap bitmap = BitmapFactory.decodeFile(absolutePath, mOptions);
return fromBitmap(bitmap);
}
public Sprite fromFile(@NonNull String fileName) {
public Icon fromFile(@NonNull String fileName) {
FileInputStream is;
try {
is = mContext.openFileInput(fileName);

View File

@@ -16,7 +16,7 @@ public final class Marker extends Annotation {
private LatLng position;
private String snippet;
private Sprite icon;
private Icon icon;
private String title;
private InfoWindow infoWindow = null;
private boolean infoWindowShown = false;
@@ -69,11 +69,11 @@ public final class Marker extends Annotation {
/**
* Do not use this method. Used internally by the SDK.
*/
public void setIcon(@Nullable Sprite icon) {
public void setIcon(@Nullable Icon icon) {
this.icon = icon;
}
public Sprite getIcon() {
public Icon getIcon() {
return icon;
}

View File

@@ -41,9 +41,9 @@ public final class MarkerOptions implements Parcelable {
marker = new Marker();
position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
snippet(in.readString());
String spriteId = in.readString();
Bitmap spriteBitmap = in.readParcelable(Bitmap.class.getClassLoader());
Sprite icon = new Sprite(spriteId, spriteBitmap);
String iconId = in.readString();
Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader());
Icon icon = new Icon(iconId, iconBitmap);
icon(icon);
title(in.readString());
}
@@ -87,7 +87,7 @@ public final class MarkerOptions implements Parcelable {
return marker.getTitle();
}
public Sprite getIcon() {
public Icon getIcon() {
return marker.getIcon();
}
@@ -101,7 +101,7 @@ public final class MarkerOptions implements Parcelable {
return this;
}
public MarkerOptions icon(@Nullable Sprite icon) {
public MarkerOptions icon(@Nullable Icon icon) {
marker.setIcon(icon);
return this;
}

View File

@@ -0,0 +1,27 @@
package com.mapbox.mapboxsdk.exceptions;
import android.graphics.Bitmap;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.views.MapView;
/**
* <p>
* A {@code IconBitmapChangedException} is thrown by {@link MapView} when a {@link Marker} is added
* that has a {@link Icon} with a {@link Bitmap} that has been modified.
* </p>
* You cannot modify a {@code Icon} after it has been added to the map in a {@code Marker}
*
* @see MapView
* @see Icon
* @see Marker
*/
public class IconBitmapChangedException extends RuntimeException {
public IconBitmapChangedException() {
super("The added Marker has a Icon with a Bitmap that has been modified. You cannot modufy" +
"a Icon after it has been added in a Marker.");
}
}

View File

@@ -1,27 +0,0 @@
package com.mapbox.mapboxsdk.exceptions;
import android.graphics.Bitmap;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.Sprite;
import com.mapbox.mapboxsdk.views.MapView;
/**
* <p>
* A {@code SpriteBitmapChangedException} is thrown by {@link MapView} when a {@link Marker} is added
* that has a {@link Sprite} with a {@link Bitmap} that has been modified.
* </p>
* You cannot modify a {@code Sprite} after it has been added to the map in a {@code Marker}
*
* @see MapView
* @see Sprite
* @see Marker
*/
public class SpriteBitmapChangedException extends RuntimeException {
public SpriteBitmapChangedException() {
super("The added Marker has a Sprite with a Bitmap that has been modified. You cannot modufy" +
"a Sprite after it has been added in a Marker.");
}
}

View File

@@ -0,0 +1,21 @@
package com.mapbox.mapboxsdk.exceptions;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.IconFactory;
/**
* <p>
* A {@code TooManyIconsException} is thrown by {@link IconFactory} when it
* cannot create a {@link Icon} because there are already too many.
* </p>
* You should try to reuse Icon objects whenever possible.
*
* @see IconFactory
*/
public class TooManyIconsException extends RuntimeException {
public TooManyIconsException() {
super("Cannot create a Icon because there are already too many. Try reusing Icons.");
}
}

View File

@@ -1,21 +0,0 @@
package com.mapbox.mapboxsdk.exceptions;
import com.mapbox.mapboxsdk.annotations.Sprite;
import com.mapbox.mapboxsdk.annotations.SpriteFactory;
/**
* <p>
* A {@code TooManySpritesException} is thrown by {@link SpriteFactory} when it
* cannot create a {@link Sprite} because there are already too many.
* </p>
* You should try to reuse Sprite objects whenever possible.
*
* @see SpriteFactory
*/
public class TooManySpritesException extends RuntimeException {
public TooManySpritesException() {
super("Cannot create a Sprite because there are already too many. Try reusing Sprites.");
}
}

View File

@@ -56,6 +56,7 @@ import com.almeros.android.multitouch.gesturedetectors.ShoveGestureDetector;
import com.almeros.android.multitouch.gesturedetectors.TwoFingerGestureDetector;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.annotations.Annotation;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.InfoWindow;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
@@ -63,16 +64,15 @@ import com.mapbox.mapboxsdk.annotations.Polygon;
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
import com.mapbox.mapboxsdk.annotations.Polyline;
import com.mapbox.mapboxsdk.annotations.PolylineOptions;
import com.mapbox.mapboxsdk.annotations.Sprite;
import com.mapbox.mapboxsdk.annotations.SpriteFactory;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.camera.CameraUpdate;
import com.mapbox.mapboxsdk.constants.MathConstants;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.exceptions.IconBitmapChangedException;
import com.mapbox.mapboxsdk.exceptions.InvalidAccessTokenException;
import com.mapbox.mapboxsdk.exceptions.SpriteBitmapChangedException;
import com.mapbox.mapboxsdk.geometry.BoundingBox;
import com.mapbox.mapboxsdk.geometry.CoordinateBounds;
import com.mapbox.mapboxsdk.geometry.LatLng;
@@ -223,7 +223,7 @@ public final class MapView extends FrameLayout {
private List<Marker> mSelectedMarkers = new ArrayList<>();
private List<InfoWindow> mInfoWindows = new ArrayList<>();
private InfoWindowAdapter mInfoWindowAdapter;
private List<Sprite> mSprites = new ArrayList<>();
private List<Icon> mIcons = new ArrayList<>();
// Used for the Mapbox Logo
private ImageView mLogoView;
@@ -907,7 +907,7 @@ public final class MapView extends FrameLayout {
@Override
public void onMapChanged(@MapChange int change) {
if (change == DID_FINISH_LOADING_MAP) {
reloadSprites();
reloadIcons();
reloadMarkers();
adjustTopOffsetPixels();
}
@@ -1954,13 +1954,13 @@ public final class MapView extends FrameLayout {
// Annotations
//
public SpriteFactory getSpriteFactory() {
return SpriteFactory.getInstance(getContext());
public IconFactory getIconFactory() {
return IconFactory.getInstance(getContext());
}
private void loadSprite(Sprite sprite) {
Bitmap bitmap = sprite.getBitmap();
String id = sprite.getId();
private void loadIcon(Icon icon) {
Bitmap bitmap = icon.getBitmap();
String id = icon.getId();
if (bitmap.getConfig() != Bitmap.Config.ARGB_8888) {
bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
}
@@ -1980,31 +1980,31 @@ public final class MapView extends FrameLayout {
scale, buffer.array());
}
private void reloadSprites() {
int count = mSprites.size();
private void reloadIcons() {
int count = mIcons.size();
for (int i = 0; i < count; i++) {
Sprite sprite = mSprites.get(i);
loadSprite(sprite);
Icon icon = mIcons.get(i);
loadIcon(icon);
}
}
private Marker prepareMarker(MarkerOptions markerOptions) {
Marker marker = markerOptions.getMarker();
Sprite icon = marker.getIcon();
Icon icon = marker.getIcon();
if (icon == null) {
icon = getSpriteFactory().defaultMarker();
icon = getIconFactory().defaultMarker();
marker.setIcon(icon);
}
if (!mSprites.contains(icon)) {
mSprites.add(icon);
loadSprite(icon);
if (!mIcons.contains(icon)) {
mIcons.add(icon);
loadIcon(icon);
} else {
Sprite oldSprite = mSprites.get(mSprites.indexOf(icon));
if (!oldSprite.getBitmap().sameAs(icon.getBitmap())) {
throw new SpriteBitmapChangedException();
Icon oldIcon = mIcons.get(mIcons.indexOf(icon));
if (!oldIcon.getBitmap().sameAs(icon.getBitmap())) {
throw new IconBitmapChangedException();
}
}
marker.setTopOffsetPixels(getTopOffsetPixelsForSprite(icon));
marker.setTopOffsetPixels(getTopOffsetPixelsForIcon(icon));
return marker;
}
@@ -2296,14 +2296,14 @@ public final class MapView extends FrameLayout {
return new ArrayList<>(annotations);
}
private int getTopOffsetPixelsForSprite(Sprite sprite) {
private int getTopOffsetPixelsForIcon(Icon icon) {
// This method will dead lock if map paused. Causes a freeze if you add a marker in an
// activity's onCreate()
if (mNativeMapView.isPaused()) {
return 0;
}
return (int) (mNativeMapView.getTopOffsetPixelsForAnnotationSymbol(sprite.getId())
return (int) (mNativeMapView.getTopOffsetPixelsForAnnotationSymbol(icon.getId())
* mScreenDensity);
}
@@ -2525,7 +2525,7 @@ public final class MapView extends FrameLayout {
if (annotation instanceof Marker) {
Marker marker = (Marker) annotation;
marker.setTopOffsetPixels(
getTopOffsetPixelsForSprite(marker.getIcon()));
getTopOffsetPixelsForIcon(marker.getIcon()));
}
}

View File

@@ -9,7 +9,7 @@ import android.view.MenuItem;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
import com.mapbox.mapboxsdk.annotations.SpriteFactory;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.utils.ApiAccess;
import com.mapbox.mapboxsdk.views.MapView;
@@ -45,18 +45,18 @@ public class InfoWindowActivity extends AppCompatActivity {
mMapView.addMarker(new MarkerOptions()
.title("Intersection")
.snippet("H St NW with 15th St NW")
.icon(SpriteFactory.getInstance(this).fromAsset("london-underground-24.png"))
.icon(IconFactory.getInstance(this).fromAsset("london-underground-24.png"))
.position(new LatLng(38.9002073, -77.03364419)));
mMapView.addMarker(new MarkerOptions()
.title("White House")
.snippet("The official residence and principal workplace of the President of the United States, located at 1600 Pennsylvania Avenue NW in Washington, D.C. It has been the residence of every U.S. president since John Adams in 1800.")
.icon(mMapView.getSpriteFactory().fromAsset("town-hall-24.png"))
.icon(mMapView.getIconFactory().fromAsset("town-hall-24.png"))
.position(new LatLng(38.897705003219784, -77.03655168667463)));
mMapView.addMarker(new MarkerOptions().title("Intersection")
.snippet("E St NW with 17th St NW")
.icon(mMapView.getSpriteFactory().fromAsset("commercial-24.png"))
.icon(mMapView.getIconFactory().fromAsset("commercial-24.png"))
.position(new LatLng(38.8954236, -77.0394623)));
final DecimalFormat formatter = new DecimalFormat("#.#####");

View File

@@ -13,10 +13,10 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
import com.mapbox.mapboxsdk.annotations.Sprite;
import com.mapbox.mapboxsdk.annotations.SpriteFactory;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.utils.ApiAccess;
import com.mapbox.mapboxsdk.views.MapView;
@@ -24,7 +24,7 @@ import com.mapbox.mapboxsdk.views.MapView;
public class InfoWindowAdapterActivity extends AppCompatActivity {
private MapView mMapView;
private SpriteFactory mSpriteFactory;
private IconFactory mIconFactory;
private Drawable mIconDrawable;
@Override
@@ -45,7 +45,7 @@ public class InfoWindowAdapterActivity extends AppCompatActivity {
mMapView.setAccessToken(ApiAccess.getToken(this));
mMapView.onCreate(savedInstanceState);
mSpriteFactory = SpriteFactory.getInstance(this);
mIconFactory = IconFactory.getInstance(this);
mIconDrawable = ContextCompat.getDrawable(this, R.drawable.ic_location_city_24dp);
mMapView.setInfoWindowAdapter(new MapView.InfoWindowAdapter() {
@@ -81,7 +81,7 @@ public class InfoWindowAdapterActivity extends AppCompatActivity {
marker.position(new LatLng(lat, lng));
mIconDrawable.setColorFilter(Color.parseColor(marker.getSnippet()), PorterDuff.Mode.SRC_IN);
Sprite icon = mSpriteFactory.fromDrawable(mIconDrawable);
Icon icon = mIconFactory.fromDrawable(mIconDrawable);
marker.icon(icon);
return marker;
}

View File

@@ -29,7 +29,7 @@ import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
import com.mapbox.mapboxsdk.annotations.PolylineOptions;
import com.mapbox.mapboxsdk.annotations.Sprite;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.constants.Style;
@@ -532,14 +532,14 @@ public class MainActivity extends AppCompatActivity {
final MarkerOptions backLot = generateMarker("Back Lot", "The back lot behind my house", null, 38.649441, -121.369064);
markerOptionsList.add(backLot);
final Sprite dogIcon = mMapView.getSpriteFactory().fromAsset("dog-park-24.png");
final Icon dogIcon = mMapView.getIconFactory().fromAsset("dog-park-24.png");
final MarkerOptions cheeseRoom = generateMarker("Cheese Room", "The only air conditioned room on the property", dogIcon, 38.531577, -122.010646);
markerOptionsList.add(cheeseRoom);
List<Marker> markers = mMapView.addMarkers(markerOptionsList);
}
private MarkerOptions generateMarker(String title, String snippet, Sprite icon, double lat, double lng) {
private MarkerOptions generateMarker(String title, String snippet, Icon icon, double lat, double lng) {
return new MarkerOptions()
.position(new LatLng(lat, lng))
.title(title)

View File

@@ -48,8 +48,8 @@ public class MarkerTest {
}
@Test
public void testSprite() {
// find a way to test Sprite
public void testIcon() {
// find a way to test Icon
}
@Test

View File

@@ -59,8 +59,8 @@ jfieldID bboxLatSouthId = nullptr;
jfieldID bboxLonEastId = nullptr;
jfieldID bboxLonWestId = nullptr;
jclass spriteClass = nullptr;
jfieldID spriteIdId = nullptr;
jclass iconClass = nullptr;
jfieldID iconIdId = nullptr;
jclass markerClass = nullptr;
jfieldID markerPositionId = nullptr;
@@ -683,7 +683,7 @@ void JNICALL nativeSetPitch(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jd
mbgl::Log::Debug(mbgl::Event::JNI, "nativeGetPitch");
assert(nativeMapViewPtr != 0);
NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr);
nativeMapView->getMap().setPitch(pitch, std::chrono::milliseconds(duration));
nativeMapView->getMap().setPitch(pitch, std::chrono::milliseconds(duration));
}
void JNICALL nativeScaleBy(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jdouble ds, jdouble cx,
@@ -848,7 +848,7 @@ jlong JNICALL nativeAddMarker(JNIEnv *env, jobject obj, jlong nativeMapViewPtr,
return -1;
}
jstring jid = reinterpret_cast<jstring>(env->GetObjectField(icon, spriteIdId));
jstring jid = reinterpret_cast<jstring>(env->GetObjectField(icon, iconIdId));
std::string id = std_string_from_jstring(env, jid);
jdouble latitude = env->GetDoubleField(position, latLngLatitudeId);
@@ -913,7 +913,7 @@ jlongArray JNICALL nativeAddMarkers(JNIEnv *env, jobject obj, jlong nativeMapVie
}
env->DeleteLocalRef(marker);
jstring jid = reinterpret_cast<jstring>(env->GetObjectField(icon, spriteIdId));
jstring jid = reinterpret_cast<jstring>(env->GetObjectField(icon, iconIdId));
env->DeleteLocalRef(icon);
std::string id = std_string_from_jstring(env, jid);
@@ -1230,13 +1230,13 @@ void JNICALL nativeAddAnnotationIcon(JNIEnv *env, jobject obj, jlong nativeMapVi
std::string pixels(reinterpret_cast<char*>(pixelData), size);
env->ReleaseByteArrayElements(jpixels, pixelData, JNI_ABORT);
auto spriteImage = std::make_shared<mbgl::SpriteImage>(
auto iconImage = std::make_shared<mbgl::SpriteImage>(
uint16_t(width),
uint16_t(height),
float(scale),
std::move(pixels));
nativeMapView->getMap().addAnnotationIcon(symbolName, spriteImage);
nativeMapView->getMap().addAnnotationIcon(symbolName, iconImage);
}
void JNICALL nativeSetVisibleCoordinateBounds(JNIEnv *env, jobject obj, jlong nativeMapViewPtr,
@@ -1703,14 +1703,14 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_ERR;
}
spriteClass = env->FindClass("com/mapbox/mapboxsdk/annotations/Sprite");
if (spriteClass == nullptr) {
iconClass = env->FindClass("com/mapbox/mapboxsdk/annotations/Icon");
if (iconClass == nullptr) {
env->ExceptionDescribe();
return JNI_ERR;
}
spriteIdId = env->GetFieldID(spriteClass, "mId", "Ljava/lang/String;");
if (spriteIdId == nullptr) {
iconIdId = env->GetFieldID(iconClass, "mId", "Ljava/lang/String;");
if (iconIdId == nullptr) {
env->ExceptionDescribe();
return JNI_ERR;
}
@@ -1727,7 +1727,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_ERR;
}
markerIconId = env->GetFieldID(markerClass, "icon", "Lcom/mapbox/mapboxsdk/annotations/Sprite;");
markerIconId = env->GetFieldID(markerClass, "icon", "Lcom/mapbox/mapboxsdk/annotations/Icon;");
if (markerIconId == nullptr) {
env->ExceptionDescribe();
return JNI_ERR;
@@ -2159,8 +2159,8 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_ERR;
}
spriteClass = reinterpret_cast<jclass>(env->NewGlobalRef(spriteClass));
if (spriteClass == nullptr) {
iconClass = reinterpret_cast<jclass>(env->NewGlobalRef(iconClass));
if (iconClass == nullptr) {
env->ExceptionDescribe();
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
@@ -2174,7 +2174,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
return JNI_ERR;
}
@@ -2184,7 +2184,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
return JNI_ERR;
}
@@ -2195,7 +2195,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
return JNI_ERR;
@@ -2207,7 +2207,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2221,7 +2221,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2235,7 +2235,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2250,7 +2250,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2267,7 +2267,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
env->DeleteGlobalRef(runtimeExceptionClass);
@@ -2300,7 +2300,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2318,7 +2318,7 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
env->DeleteGlobalRef(latLngClass);
env->DeleteGlobalRef(latLngZoomClass);
env->DeleteGlobalRef(bboxClass);
env->DeleteGlobalRef(spriteClass);
env->DeleteGlobalRef(iconClass);
env->DeleteGlobalRef(markerClass);
env->DeleteGlobalRef(polylineClass);
env->DeleteGlobalRef(polygonClass);
@@ -2371,9 +2371,9 @@ extern "C" JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) {
bboxLonEastId = nullptr;
bboxLonWestId = nullptr;
env->DeleteGlobalRef(spriteClass);
spriteClass = nullptr;
spriteIdId = nullptr;
env->DeleteGlobalRef(iconClass);
iconClass = nullptr;
iconIdId = nullptr;
env->DeleteGlobalRef(markerClass);
markerClass = nullptr;

View File

@@ -50,8 +50,8 @@ extern jfieldID bboxLatSouthId;
extern jfieldID bboxLonEastId;
extern jfieldID bboxLonWestId;
extern jclass spriteClass;
extern jfieldID spriteIdId;
extern jclass iconClass;
extern jfieldID iconIdId;
extern jclass markerClass;
extern jfieldID markerPositionId;