From f3de446bd9faf99103d967343b802cf2ccdc6920 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Sun, 20 Dec 2015 11:57:36 +0100 Subject: [android] #3304 - refactor SpriteFactory to IconFactory, changed all the sprite names to icon for convention --- .../com/mapbox/mapboxsdk/annotations/Icon.java | 40 ++++++ .../mapbox/mapboxsdk/annotations/IconFactory.java | 149 +++++++++++++++++++++ .../com/mapbox/mapboxsdk/annotations/Marker.java | 6 +- .../mapboxsdk/annotations/MarkerOptions.java | 10 +- .../com/mapbox/mapboxsdk/annotations/Sprite.java | 40 ------ .../mapboxsdk/annotations/SpriteFactory.java | 149 --------------------- .../exceptions/IconBitmapChangedException.java | 27 ++++ .../exceptions/SpriteBitmapChangedException.java | 27 ---- .../exceptions/TooManyIconsException.java | 21 +++ .../exceptions/TooManySpritesException.java | 21 --- .../java/com/mapbox/mapboxsdk/views/MapView.java | 52 +++---- 11 files changed, 271 insertions(+), 271 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java delete mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Sprite.java delete mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/IconBitmapChangedException.java delete mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/SpriteBitmapChangedException.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManyIconsException.java delete mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManySpritesException.java (limited to 'platform/android/MapboxGLAndroidSDK/src/main') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java new file mode 100644 index 0000000000..d7e28dde73 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java @@ -0,0 +1,40 @@ +package com.mapbox.mapboxsdk.annotations; + +import android.graphics.Bitmap; + +public final class Icon { + private Bitmap mBitmap; + private String mId; + + Icon(String id, Bitmap bitmap) { + mId = id; + mBitmap = bitmap; + } + + public String getId() { + return mId; + } + + public Bitmap getBitmap() { + return mBitmap; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Icon icon = (Icon) o; + + if (!mBitmap.equals(icon.mBitmap)) return false; + return mId.equals(icon.mId); + + } + + @Override + public int hashCode() { + int result = mBitmap.hashCode(); + result = 31 * result + mId.hashCode(); + return result; + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java new file mode 100644 index 0000000000..8d58866acd --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/IconFactory.java @@ -0,0 +1,149 @@ +package com.mapbox.mapboxsdk.annotations; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.support.annotation.DrawableRes; +import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; +import android.util.DisplayMetrics; +import android.view.WindowManager; + +import com.mapbox.mapboxsdk.R; +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 IconFactory { + + private static final String ICON_ID_PREFIX = "com.mapbox.icons.icon_"; + + private Context mContext; + private static IconFactory sInstance; + private Icon mDefaultMarker; + private BitmapFactory.Options mOptions; + + private int mNextId = 0; + + public static synchronized IconFactory getInstance(@NonNull Context context) { + if (sInstance == null) { + sInstance = new IconFactory(context.getApplicationContext()); + } + return sInstance; + } + + private IconFactory(@NonNull Context context) { + mContext = context; + DisplayMetrics realMetrics = null; + DisplayMetrics metrics = new DisplayMetrics(); + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + realMetrics = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(realMetrics); + } + wm.getDefaultDisplay().getMetrics(metrics); + + mOptions = new BitmapFactory.Options(); + mOptions.inScaled = true; + mOptions.inDensity = DisplayMetrics.DENSITY_DEFAULT; + mOptions.inTargetDensity = metrics.densityDpi; + if (realMetrics != null) { + mOptions.inScreenDensity = realMetrics.densityDpi; + } + } + + public Icon fromBitmap(@NonNull Bitmap bitmap) { + if (mNextId < 0) { + throw new TooManyIconsException(); + } + String id = ICON_ID_PREFIX + ++mNextId; + return new Icon(id, bitmap); + } + + public Icon fromDrawable(@NonNull Drawable drawable) { + int width = drawable.getIntrinsicWidth(); + int height = drawable.getIntrinsicHeight(); + return fromDrawable(drawable, width, height); + } + + public Icon fromDrawable(@NonNull Drawable drawable, int width, int height) { + if ((width < 0) || (height < 0)) { + return null; + } + + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + Rect temp = drawable.getBounds(); + Rect bounds = new Rect(0, 0, width, height); + drawable.setBounds(bounds); + drawable.draw(canvas); + drawable.setBounds(temp); + return fromBitmap(bitmap); + } + + public Icon fromResource(@DrawableRes int resourceId) { + Drawable drawable = ContextCompat.getDrawable(mContext, resourceId); + Bitmap bitmap; + if (drawable instanceof BitmapDrawable) { + BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; + bitmap = bitmapDrawable.getBitmap(); + } else { + if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) { + bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); + } else { + bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + } + return fromBitmap(bitmap); + } + + public Icon defaultMarker() { + if (mDefaultMarker == null) { + mDefaultMarker = fromResource(R.drawable.default_marker); + } + return mDefaultMarker; + } + + private Icon fromInputStream(@NonNull InputStream is) { + Bitmap bitmap = BitmapFactory.decodeStream(is, null, mOptions); + return fromBitmap(bitmap); + } + + public Icon fromAsset(@NonNull String assetName) { + InputStream is; + try { + is = mContext.getAssets().open(assetName); + } catch (IOException e) { + return null; + } + return fromInputStream(is); + } + + public Icon fromPath(@NonNull String absolutePath) { + Bitmap bitmap = BitmapFactory.decodeFile(absolutePath, mOptions); + return fromBitmap(bitmap); + } + + public Icon fromFile(@NonNull String fileName) { + FileInputStream is; + try { + is = mContext.openFileInput(fileName); + } catch (FileNotFoundException e) { + return null; + } + return fromInputStream(is); + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java index 0f626a2618..8978d4be48 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java @@ -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; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java index b5bb24a49d..69e8b03bda 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java @@ -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; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Sprite.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Sprite.java deleted file mode 100644 index 597c196d2a..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Sprite.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mapbox.mapboxsdk.annotations; - -import android.graphics.Bitmap; - -public final class Sprite { - private Bitmap mBitmap; - private String mId; - - Sprite(String id, Bitmap bitmap) { - mId = id; - mBitmap = bitmap; - } - - public String getId() { - return mId; - } - - public Bitmap getBitmap() { - return mBitmap; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Sprite sprite = (Sprite) o; - - if (!mBitmap.equals(sprite.mBitmap)) return false; - return mId.equals(sprite.mId); - - } - - @Override - public int hashCode() { - int result = mBitmap.hashCode(); - result = 31 * result + mId.hashCode(); - return result; - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java deleted file mode 100644 index b614cc5fc6..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/SpriteFactory.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.mapbox.mapboxsdk.annotations; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Build; -import android.support.annotation.DrawableRes; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.util.DisplayMetrics; -import android.view.WindowManager; - -import com.mapbox.mapboxsdk.R; -import com.mapbox.mapboxsdk.exceptions.TooManySpritesException; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; - -public final class SpriteFactory { - - private static final String SPRITE_ID_PREFIX = "com.mapbox.sprites.sprite_"; - - private Context mContext; - private static SpriteFactory sInstance; - private Sprite mDefaultMarker; - private BitmapFactory.Options mOptions; - - private int mNextId = 0; - - public static synchronized SpriteFactory getInstance(@NonNull Context context) { - if (sInstance == null) { - sInstance = new SpriteFactory(context.getApplicationContext()); - } - return sInstance; - } - - private SpriteFactory(@NonNull Context context) { - mContext = context; - DisplayMetrics realMetrics = null; - DisplayMetrics metrics = new DisplayMetrics(); - WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - realMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getRealMetrics(realMetrics); - } - wm.getDefaultDisplay().getMetrics(metrics); - - mOptions = new BitmapFactory.Options(); - mOptions.inScaled = true; - mOptions.inDensity = DisplayMetrics.DENSITY_DEFAULT; - mOptions.inTargetDensity = metrics.densityDpi; - if (realMetrics != null) { - mOptions.inScreenDensity = realMetrics.densityDpi; - } - } - - public Sprite fromBitmap(@NonNull Bitmap bitmap) { - if (mNextId < 0) { - throw new TooManySpritesException(); - } - String id = SPRITE_ID_PREFIX + ++mNextId; - return new Sprite(id, bitmap); - } - - public Sprite 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) { - if ((width < 0) || (height < 0)) { - return null; - } - - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - Rect temp = drawable.getBounds(); - Rect bounds = new Rect(0, 0, width, height); - drawable.setBounds(bounds); - drawable.draw(canvas); - drawable.setBounds(temp); - return fromBitmap(bitmap); - } - - public Sprite fromResource(@DrawableRes int resourceId) { - Drawable drawable = ContextCompat.getDrawable(mContext, resourceId); - Bitmap bitmap; - if (drawable instanceof BitmapDrawable) { - BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; - bitmap = bitmapDrawable.getBitmap(); - } else { - if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) { - bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); - } else { - bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); - } - - Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - } - return fromBitmap(bitmap); - } - - public Sprite defaultMarker() { - if (mDefaultMarker == null) { - mDefaultMarker = fromResource(R.drawable.default_marker); - } - return mDefaultMarker; - } - - private Sprite fromInputStream(@NonNull InputStream is) { - Bitmap bitmap = BitmapFactory.decodeStream(is, null, mOptions); - return fromBitmap(bitmap); - } - - public Sprite fromAsset(@NonNull String assetName) { - InputStream is; - try { - is = mContext.getAssets().open(assetName); - } catch (IOException e) { - return null; - } - return fromInputStream(is); - } - - public Sprite fromPath(@NonNull String absolutePath) { - Bitmap bitmap = BitmapFactory.decodeFile(absolutePath, mOptions); - return fromBitmap(bitmap); - } - - public Sprite fromFile(@NonNull String fileName) { - FileInputStream is; - try { - is = mContext.openFileInput(fileName); - } catch (FileNotFoundException e) { - return null; - } - return fromInputStream(is); - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/IconBitmapChangedException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/IconBitmapChangedException.java new file mode 100644 index 0000000000..00655800e4 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/IconBitmapChangedException.java @@ -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; + +/** + *

+ * 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. + *

+ * 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."); + } + +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/SpriteBitmapChangedException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/SpriteBitmapChangedException.java deleted file mode 100644 index 03c5f914b1..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/SpriteBitmapChangedException.java +++ /dev/null @@ -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; - -/** - *

- * 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. - *

- * 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."); - } - -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManyIconsException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManyIconsException.java new file mode 100644 index 0000000000..167b75088e --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManyIconsException.java @@ -0,0 +1,21 @@ +package com.mapbox.mapboxsdk.exceptions; + +import com.mapbox.mapboxsdk.annotations.Icon; +import com.mapbox.mapboxsdk.annotations.IconFactory; + +/** + *

+ * A {@code TooManyIconsException} is thrown by {@link IconFactory} when it + * cannot create a {@link Icon} because there are already too many. + *

+ * 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."); + } + +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManySpritesException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManySpritesException.java deleted file mode 100644 index d36c99edd2..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/TooManySpritesException.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.mapbox.mapboxsdk.exceptions; - -import com.mapbox.mapboxsdk.annotations.Sprite; -import com.mapbox.mapboxsdk.annotations.SpriteFactory; - -/** - *

- * A {@code TooManySpritesException} is thrown by {@link SpriteFactory} when it - * cannot create a {@link Sprite} because there are already too many. - *

- * 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."); - } - -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index 30127d4c37..4ef0219362 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -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 mSelectedMarkers = new ArrayList<>(); private List mInfoWindows = new ArrayList<>(); private InfoWindowAdapter mInfoWindowAdapter; - private List mSprites = new ArrayList<>(); + private List 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())); } } -- cgit v1.2.1