Skip to content

Commit

Permalink
Merge branch '#11' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
SupasinTatiyanupanwong committed May 7, 2022
2 parents 653180f + 6fe80bf commit eb68aad
Show file tree
Hide file tree
Showing 109 changed files with 2,562 additions and 708 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ The library consists of 4 artifacts; `maps-core`, `maps-google`, `maps-amazon`,

### Migrating from the existing APIs

| Google Maps SDK for Android | Amazon Maps SDK | HUAWEI Map Kit | Map Kit |
|:--------------------------- |:---------------------- |:---------------------- |:---------------------------- |
| ``SupportMapFragment`` | ``SupportMapFragment`` | ``SupportMapFragment`` | ``MapFragment`` |
| ``GoogleMap`` | ``AmazonMap`` | ``HuaweiMap`` | ``MapClient`` |
| ``new LatLng()`` | ``new LatLng()`` | ``new LatLng()`` | ``MapKit.newLatLng()`` |
| ``new *Options()`` | ``new *Options()`` | ``new *Options()`` | ``MapKit.new*Options()`` |
| ``*.builder()`` | ``*.builder()`` | ``*.builder()`` | ``MapKit.new*Builder()`` |
| ``*Factory.*()`` | ``*Factory.*()`` | ``*Factory.*()`` | ``MapKit.get*Factory().*()`` |
| ``Tile.NO_TILE`` | ``Tile.NO_TILE`` | ``Tile.NO_TILE`` | ``MapKit.noTile()`` |
| Google Maps SDK | Amazon Maps SDK | HUAWEI Map Kit | Map Kit |
|:------------------------ |:------------------------ |:------------------------ |:---------------------------- |
| ``SupportMapFragment`` | ``SupportMapFragment`` | ``SupportMapFragment`` | ``MapFragment`` |
| ``GoogleMap`` | ``AmazonMap`` | ``HuaweiMap`` | ``MapClient`` |
| ``new LatLng()`` | ``new LatLng()`` | ``new LatLng()`` | ``MapKit.newLatLng()`` |
| ``new *Options()`` | ``new *Options()`` | ``new *Options()`` | ``MapKit.new*Options()`` |
| ``*.builder()`` | ``*.builder()`` | ``*.builder()`` | ``MapKit.new*Builder()`` |
| ``*Factory.*()`` | ``*Factory.*()`` | ``*Factory.*()`` | ``MapKit.get*Factory().*()`` |
| ``TileProvider.NO_TILE`` | ``TileProvider.NO_TILE`` | ``TileProvider.NO_TILE`` | ``MapKit.noTile()`` |

### Limitation

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath 'com.android.tools.build:gradle:7.1.3'

classpath 'com.vanniktech:gradle-maven-publish-plugin:0.13.0'
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
5 changes: 5 additions & 0 deletions maps-amazon/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ android {

consumerProguardFiles "consumer-rules.pro"
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion maps-amazon/consumer-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
# limitations under the License.
#

-keep class dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonMapFactory {
-keep class dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.AmazonMapsBackend {
public static *** buildIfSupported(android.content.Context);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
* limitations under the License.
*/

package dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model;
package dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon;

import android.content.Context;

import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RawRes;
Expand All @@ -27,6 +29,25 @@
import com.amazon.geo.mapsv2.util.ConnectionResult;

import dev.supasintatiyanupanwong.libraries.android.kits.maps.MapKit;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.MapKitBackend;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonBitmapDescriptor;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonCameraPosition;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonCameraUpdate;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonCap;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonCircle;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonGroundOverlay;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonLatLng;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonLatLngBounds;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonMapClient;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonMarker;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonPatternItem;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonPolygon;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonPolyline;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonTile;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonTileOverlay;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonTileProvider;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonUrlTileProvider;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model.AmazonVisibleRegion;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.BitmapDescriptor;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.ButtCap;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.CameraPosition;
Expand All @@ -40,7 +61,6 @@
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.LatLng;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.LatLngBounds;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.MapClient;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.MapFactory;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.Marker;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.Polygon;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.Polyline;
Expand All @@ -53,27 +73,32 @@
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.VisibleRegion;

@SuppressWarnings("unused")
class AmazonMapFactory implements MapFactory {
class AmazonMapsBackend implements MapKitBackend {

private AmazonMapFactory() {}
private AmazonMapsBackend() {}

@Override
public @NonNull BitmapDescriptor.Factory getBitmapDescriptorFactory() {
@Override public @LayoutRes int getMapFragmentLayoutRes() {
return R.layout.kits_maps_internal_amazon_map_view;
}

@Override public @IdRes int getMapFragmentIdRes() {
return R.id.kits_maps_internal_map_fragment;
}


@Override public @NonNull BitmapDescriptor.Factory getBitmapDescriptorFactory() {
return AmazonBitmapDescriptor.FACTORY;
}

@Override
public @NonNull ButtCap newButtCap() {
@Override public @NonNull ButtCap newButtCap() {
return AmazonCap.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull CameraUpdate.Factory getCameraUpdateFactory() {
@Override public @NonNull CameraUpdate.Factory getCameraUpdateFactory() {
return AmazonCameraUpdate.FACTORY;
}

@Override
public @NonNull CameraPosition newCameraPositionFromLatLngZoom(
@Override public @NonNull CameraPosition newCameraPositionFromLatLngZoom(
@NonNull LatLng target,
float zoom) {
return newCameraPositionBuilder()
Expand All @@ -82,132 +107,108 @@ private AmazonMapFactory() {}
.build();
}

@Override
public @NonNull CameraPosition.Builder newCameraPositionBuilder() {
@Override public @NonNull CameraPosition.Builder newCameraPositionBuilder() {
return new AmazonCameraPosition.Builder();
}

@Override
public @NonNull CameraPosition.Builder newCameraPositionBuilder(
@Override public @NonNull CameraPosition.Builder newCameraPositionBuilder(
@NonNull CameraPosition camera) {
return new AmazonCameraPosition.Builder(camera);
}

@Override
public @NonNull Circle.Options newCircleOptions() {
@Override public @NonNull Circle.Options newCircleOptions() {
return new AmazonCircle.Options();
}

@Override
public @NonNull CustomCap newCustomCap(
@Override public @NonNull CustomCap newCustomCap(
@NonNull BitmapDescriptor bitmapDescriptor,
float refWidth) {
return AmazonCap.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull CustomCap newCustomCap(@NonNull BitmapDescriptor bitmapDescriptor) {
@Override public @NonNull CustomCap newCustomCap(@NonNull BitmapDescriptor bitmapDescriptor) {
return AmazonCap.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull Dot newDot() {
@Override public @NonNull Dot newDot() {
return AmazonPatternItem.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull Dash newDash(float length) {
@Override public @NonNull Dash newDash(float length) {
return AmazonPatternItem.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull Gap newGap(float length) {
@Override public @NonNull Gap newGap(float length) {
return AmazonPatternItem.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull GroundOverlay.Options newGroundOverlayOptions() {
@Override public @NonNull GroundOverlay.Options newGroundOverlayOptions() {
return new AmazonGroundOverlay.Options();
}

@Override
public @NonNull LatLng newLatLng(double latitude, double longitude) {
@Override public @NonNull LatLng newLatLng(double latitude, double longitude) {
return new AmazonLatLng(latitude, longitude);
}

@Override
public @NonNull LatLngBounds newLatLngBounds(
@Override public @NonNull LatLngBounds newLatLngBounds(
@NonNull LatLng southwest,
@NonNull LatLng northeast) {
return new AmazonLatLngBounds(southwest, northeast);
}

@Override
public @NonNull LatLngBounds.Builder newLatLngBoundsBuilder() {
@Override public @NonNull LatLngBounds.Builder newLatLngBoundsBuilder() {
return new AmazonLatLngBounds.Builder();
}

@Override
public @NonNull MapClient.Style.Options newMapStyleOptions(String json) {
@Override public @NonNull MapClient.Style.Options newMapStyleOptions(String json) {
return AmazonMapClient.Style.Options.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull MapClient.Style.Options newMapStyleOptions(
@Override public @NonNull MapClient.Style.Options newMapStyleOptions(
@NonNull Context context, @RawRes int resourceId) {
return AmazonMapClient.Style.Options.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull Marker.Options newMarkerOptions() {
@Override public @NonNull Marker.Options newMarkerOptions() {
return new AmazonMarker.Options();
}

@Override
public @NonNull Polygon.Options newPolygonOptions() {
@Override public @NonNull Polygon.Options newPolygonOptions() {
return new AmazonPolygon.Options();
}

@Override
public @NonNull Polyline.Options newPolylineOptions() {
@Override public @NonNull Polyline.Options newPolylineOptions() {
return new AmazonPolyline.Options();
}

@Override
public @NonNull RoundCap newRoundCap() {
@Override public @NonNull RoundCap newRoundCap() {
return AmazonCap.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull SquareCap newSquareCap() {
@Override public @NonNull SquareCap newSquareCap() {
return AmazonCap.NULL; // Not supported, null object for API safe.
}

@Override
public @NonNull TileOverlay.Options newTileOverlayOptions() {
@Override public @NonNull TileOverlay.Options newTileOverlayOptions() {
return new AmazonTileOverlay.Options();
}

@Override
public @NonNull Tile newTile(int width, int height, byte[] data) {
@Override public @NonNull Tile newTile(int width, int height, byte[] data) {
return new AmazonTile(width, height, data);
}

@Override
public @NonNull Tile noTile() {
@Override public @NonNull Tile noTile() {
return AmazonTileProvider.NO_TILE;
}

@Override
public @NonNull TileProvider newUrlTileProvider(
@Override public @NonNull TileProvider newUrlTileProvider(
int width,
int height,
@NonNull UrlTileProvider tileProvider) {
return new AmazonUrlTileProvider(width, height, tileProvider);
}

@Override
public @NonNull VisibleRegion newVisibleRegion(
@Override public @NonNull VisibleRegion newVisibleRegion(
LatLng nearLeft,
LatLng nearRight,
LatLng farLeft,
Expand All @@ -216,8 +217,7 @@ private AmazonMapFactory() {}
return new AmazonVisibleRegion(nearLeft, nearRight, farLeft, farRight, latLngBounds);
}

@Override
public void getMapAsync(
@Override public void getMapAsync(
@NonNull Fragment fragment,
@NonNull final MapKit.OnMapReadyCallback callback) {
((com.amazon.geo.mapsv2.SupportMapFragment) fragment)
Expand All @@ -230,13 +230,13 @@ public void onMapReady(com.amazon.geo.mapsv2.AmazonMap googleMap) {
}


public static @Nullable MapFactory buildIfSupported(@NonNull Context context) {
public static @Nullable MapKitBackend buildIfSupported(@NonNull Context context) {
final int result = AmazonMapsRuntimeUtil.isAmazonMapsRuntimeAvailable(context);
// if (result != ConnectionResult.SUCCESS) {
// return null;
// }
if (result != ConnectionResult.SUCCESS) {
return null;
}

return new AmazonMapFactory();
return new AmazonMapsBackend();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,22 @@

package dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model;

import static androidx.annotation.RestrictTo.Scope.LIBRARY;

import android.graphics.Bitmap;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;

import com.amazon.geo.mapsv2.model.BitmapDescriptorFactory;

import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.BitmapDescriptor;

class AmazonBitmapDescriptor implements BitmapDescriptor {
@RestrictTo(LIBRARY)
public class AmazonBitmapDescriptor implements BitmapDescriptor {

static final Factory FACTORY = new Factory() {
public static final Factory FACTORY = new Factory() {
@Override
public @NonNull BitmapDescriptor defaultMarker() {
return new AmazonBitmapDescriptor(BitmapDescriptorFactory.defaultMarker());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,18 @@

package dev.supasintatiyanupanwong.libraries.android.kits.maps.internal.amazon.model;

import static androidx.annotation.RestrictTo.Scope.LIBRARY;

import androidx.annotation.FloatRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;

import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.CameraPosition;
import dev.supasintatiyanupanwong.libraries.android.kits.maps.model.LatLng;

class AmazonCameraPosition implements CameraPosition {
@RestrictTo(LIBRARY)
public class AmazonCameraPosition implements CameraPosition {

private final com.amazon.geo.mapsv2.model.CameraPosition mDelegate;

Expand Down Expand Up @@ -90,14 +94,14 @@ static com.amazon.geo.mapsv2.model.CameraPosition unwrap(CameraPosition wrapped)
}


static class Builder implements CameraPosition.Builder {
public static class Builder implements CameraPosition.Builder {
private final com.amazon.geo.mapsv2.model.CameraPosition.Builder mDelegate;

Builder() {
public Builder() {
mDelegate = com.amazon.geo.mapsv2.model.CameraPosition.builder();
}

Builder(CameraPosition camera) {
public Builder(CameraPosition camera) {
mDelegate = com.amazon.geo.mapsv2.model.CameraPosition.builder(
AmazonCameraPosition.unwrap(camera));
}
Expand Down
Loading

0 comments on commit eb68aad

Please sign in to comment.