react-native-maps 1.1.0 → 1.2.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  2. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  3. package/android/gradlew +185 -0
  4. package/android/gradlew.bat +89 -0
  5. package/android/src/main/java/com/airbnb/android/react/maps/AirMapCircleManager.java +4 -9
  6. package/android/src/main/java/com/airbnb/android/react/maps/AirMapGradientPolyline.java +2 -4
  7. package/android/src/main/java/com/airbnb/android/react/maps/AirMapGradientPolylineManager.java +4 -9
  8. package/android/src/main/java/com/airbnb/android/react/maps/AirMapHeatmap.java +2 -2
  9. package/android/src/main/java/com/airbnb/android/react/maps/AirMapLocalTile.java +2 -6
  10. package/android/src/main/java/com/airbnb/android/react/maps/AirMapLocalTileManager.java +4 -10
  11. package/android/src/main/java/com/airbnb/android/react/maps/AirMapManager.java +7 -12
  12. package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarker.java +11 -22
  13. package/android/src/main/java/com/airbnb/android/react/maps/AirMapMarkerManager.java +2 -2
  14. package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlay.java +0 -5
  15. package/android/src/main/java/com/airbnb/android/react/maps/AirMapOverlayManager.java +4 -10
  16. package/android/src/main/java/com/airbnb/android/react/maps/AirMapPolygonManager.java +4 -9
  17. package/android/src/main/java/com/airbnb/android/react/maps/AirMapPolyline.java +1 -1
  18. package/android/src/main/java/com/airbnb/android/react/maps/AirMapPolylineManager.java +4 -9
  19. package/android/src/main/java/com/airbnb/android/react/maps/AirMapTileProvider.java +42 -67
  20. package/android/src/main/java/com/airbnb/android/react/maps/AirMapTileWorker.java +4 -11
  21. package/android/src/main/java/com/airbnb/android/react/maps/AirMapUrlTile.java +3 -3
  22. package/android/src/main/java/com/airbnb/android/react/maps/AirMapUrlTileManager.java +4 -10
  23. package/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java +22 -47
  24. package/android/src/main/java/com/airbnb/android/react/maps/AirMapWMSTile.java +5 -11
  25. package/android/src/main/java/com/airbnb/android/react/maps/AirMapWMSTileManager.java +4 -10
  26. package/android/src/main/java/com/airbnb/android/react/maps/FileUtil.java +2 -5
  27. package/android/src/main/java/com/airbnb/android/react/maps/ImageReader.java +4 -6
  28. package/android/src/main/java/com/airbnb/android/react/maps/ViewAttacherGroup.java +1 -6
  29. package/android/src/main/java/com/airbnb/android/react/maps/ViewChangesTracker.java +4 -4
  30. package/lib/Geojson.d.ts +11 -0
  31. package/lib/Geojson.js +3 -2
  32. package/package.json +5 -3
  33. package/android/src/main/assets/ula.kml +0 -1214
  34. package/ios/User.xcconfig +0 -0
@@ -2,7 +2,6 @@ package com.airbnb.android.react.maps;
2
2
 
3
3
  import android.content.Context;
4
4
  import android.graphics.Color;
5
- import android.os.Build;
6
5
  import android.util.DisplayMetrics;
7
6
  import android.view.WindowManager;
8
7
 
@@ -26,14 +25,10 @@ public class AirMapPolylineManager extends ViewGroupManager<AirMapPolyline> {
26
25
 
27
26
  public AirMapPolylineManager(ReactApplicationContext reactContext) {
28
27
  super();
29
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
30
- metrics = new DisplayMetrics();
31
- ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
32
- .getDefaultDisplay()
33
- .getRealMetrics(metrics);
34
- } else {
35
- metrics = reactContext.getResources().getDisplayMetrics();
36
- }
28
+ metrics = new DisplayMetrics();
29
+ ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
30
+ .getDefaultDisplay()
31
+ .getRealMetrics(metrics);
37
32
  }
38
33
 
39
34
  @Override
@@ -14,12 +14,8 @@ import android.graphics.Color;
14
14
  import android.graphics.Paint;
15
15
  import android.graphics.Rect;
16
16
 
17
- import androidx.annotation.NonNull;
18
17
  import androidx.work.OneTimeWorkRequest;
19
18
  import androidx.work.WorkManager;
20
- import androidx.work.WorkRequest;
21
- import androidx.work.Worker;
22
- import androidx.work.WorkerParameters;
23
19
  import androidx.work.Data;
24
20
  import androidx.work.Constraints;
25
21
  import androidx.work.NetworkType;
@@ -27,10 +23,7 @@ import androidx.work.ExistingWorkPolicy;
27
23
  import androidx.work.Operation;
28
24
  import androidx.work.WorkInfo;
29
25
 
30
- import com.google.android.gms.maps.GoogleMap;
31
26
  import com.google.android.gms.maps.model.Tile;
32
- import com.google.android.gms.maps.model.TileOverlay;
33
- import com.google.android.gms.maps.model.TileOverlayOptions;
34
27
  import com.google.android.gms.maps.model.TileProvider;
35
28
  import com.google.android.gms.maps.model.UrlTileProvider;
36
29
 
@@ -61,7 +54,7 @@ public class AirMapTileProvider implements TileProvider {
61
54
  @Override
62
55
  public URL getTileUrl(int x, int y, int zoom) {
63
56
 
64
- if (AirMapTileProvider.this.flipY == true) {
57
+ if (AirMapTileProvider.this.flipY) {
65
58
  y = (1 << zoom) - y - 1;
66
59
  }
67
60
 
@@ -69,14 +62,14 @@ public class AirMapTileProvider implements TileProvider {
69
62
  .replace("{x}", Integer.toString(x))
70
63
  .replace("{y}", Integer.toString(y))
71
64
  .replace("{z}", Integer.toString(zoom));
72
- URL url = null;
65
+ URL url;
73
66
 
74
67
  if(AirMapTileProvider.this.maximumZ > 0 && zoom > AirMapTileProvider.this.maximumZ) {
75
- return url;
68
+ return null;
76
69
  }
77
70
 
78
71
  if(AirMapTileProvider.this.minimumZ > 0 && zoom < AirMapTileProvider.this.minimumZ) {
79
- return url;
72
+ return null;
80
73
  }
81
74
 
82
75
  try {
@@ -152,7 +145,7 @@ public class AirMapTileProvider implements TileProvider {
152
145
  if (image == null && this.tileCachePath != null && this.offlineMode) {
153
146
  Log.d("urlTile", "findLowerZoomTileForScaling");
154
147
  int zoomLevelToStart = (zoom > this.maximumNativeZ) ? this.maximumNativeZ - 1 : zoom - 1;
155
- int minimumZoomToSearch = this.minimumZ >= zoom - 3 ? this.minimumZ : zoom - 3;
148
+ int minimumZoomToSearch = Math.max(this.minimumZ, zoom - 3);
156
149
  for (int tryZoom = zoomLevelToStart; tryZoom >= minimumZoomToSearch; tryZoom--) {
157
150
  image = scaleLowerZoomTile(x, y, zoom, tryZoom);
158
151
  if (image != null) {
@@ -166,16 +159,15 @@ public class AirMapTileProvider implements TileProvider {
166
159
 
167
160
  byte[] getTileImage(int x, int y, int zoom) {
168
161
  byte[] image = null;
169
- boolean fallbackOnSyncFetch = false;
170
-
162
+
171
163
  if (this.tileCachePath != null) {
172
164
  image = readTileImage(x, y, zoom);
173
165
  if (image != null) {
174
- Log.d("urlTile", "tile cache HIT for " + Integer.toString(zoom) +
175
- "/" + Integer.toString(x) + "/" + Integer.toString(y));
166
+ Log.d("urlTile", "tile cache HIT for " + zoom +
167
+ "/" + x + "/" + y);
176
168
  } else {
177
- Log.d("urlTile", "tile cache MISS for " + Integer.toString(zoom) +
178
- "/" + Integer.toString(x) + "/" + Integer.toString(y));
169
+ Log.d("urlTile", "tile cache MISS for " + zoom +
170
+ "/" + x + "/" + y);
179
171
  }
180
172
  if (image != null && !this.offlineMode) {
181
173
  checkForRefresh(x, y, zoom);
@@ -198,39 +190,35 @@ public class AirMapTileProvider implements TileProvider {
198
190
  .build()
199
191
  )
200
192
  .build();
201
- if (tileRefreshWorkRequest != null) {
202
- WorkManager workManager = WorkManager.getInstance(this.context.getApplicationContext());
203
- Operation fetchOperation = workManager
204
- .enqueueUniqueWork(fileName, ExistingWorkPolicy.KEEP, tileRefreshWorkRequest);
205
- Future<Operation.State.SUCCESS> operationFuture = fetchOperation.getResult();
206
- try {
207
- operationFuture.get(1L, TimeUnit.SECONDS);
208
- Thread.sleep(500);
209
- Future<List<WorkInfo>> fetchFuture = workManager.getWorkInfosByTag(fileName);
210
- List<WorkInfo> workInfo = fetchFuture.get(1L, TimeUnit.SECONDS);
211
- Log.d("urlTile: ", workInfo.get(0).toString());
212
- if (this.tileCachePath != null) {
213
- image = readTileImage(x, y, zoom);
214
- if (image != null) {
215
- Log.d("urlTile","tile cache fetch HIT for " + Integer.toString(zoom) +
216
- "/" + Integer.toString(x) + "/" + Integer.toString(y));
217
- } else {
218
- Log.d("urlTile","tile cache fetch MISS for " + Integer.toString(zoom) +
219
- "/" + Integer.toString(x) + "/" + Integer.toString(y));
220
- }
193
+ WorkManager workManager = WorkManager.getInstance(this.context.getApplicationContext());
194
+ Operation fetchOperation = workManager
195
+ .enqueueUniqueWork(fileName, ExistingWorkPolicy.KEEP, tileRefreshWorkRequest);
196
+ Future<Operation.State.SUCCESS> operationFuture = fetchOperation.getResult();
197
+ try {
198
+ operationFuture.get(1L, TimeUnit.SECONDS);
199
+ Thread.sleep(500);
200
+ Future<List<WorkInfo>> fetchFuture = workManager.getWorkInfosByTag(fileName);
201
+ List<WorkInfo> workInfo = fetchFuture.get(1L, TimeUnit.SECONDS);
202
+ Log.d("urlTile: ", workInfo.get(0).toString());
203
+ if (this.tileCachePath != null) {
204
+ image = readTileImage(x, y, zoom);
205
+ if (image != null) {
206
+ Log.d("urlTile","tile cache fetch HIT for " + zoom +
207
+ "/" + x + "/" + y);
208
+ } else {
209
+ Log.d("urlTile","tile cache fetch MISS for " + zoom +
210
+ "/" + x + "/" + y);
221
211
  }
222
- } catch (Exception e) {
223
- e.printStackTrace();
224
212
  }
225
- } else {
226
- fallbackOnSyncFetch = true;
213
+ } catch (Exception e) {
214
+ e.printStackTrace();
227
215
  }
228
- } else if (fallbackOnSyncFetch || (image == null && !this.offlineMode)) {
216
+ } else if (image == null && !this.offlineMode) {
229
217
  Log.d("urlTile", "Normal fetch");
230
218
  image = fetchTile(x, y, zoom);
231
219
  if (image == null) {
232
- Log.d("urlTile", "tile fetch TIMEOUT / FAIL for " + Integer.toString(zoom) +
233
- "/" + Integer.toString(x) + "/" + Integer.toString(y));
220
+ Log.d("urlTile", "tile fetch TIMEOUT / FAIL for " + zoom +
221
+ "/" + x + "/" + y);
234
222
  }
235
223
  }
236
224
 
@@ -304,7 +292,7 @@ public class AirMapTileProvider implements TileProvider {
304
292
  int yParent = y >> overZoomLevel;
305
293
  int zoomParent = zoom - overZoomLevel;
306
294
 
307
- int xOffset = x % zoomFactor;;
295
+ int xOffset = x % zoomFactor;
308
296
  int yOffset = y % zoomFactor;
309
297
 
310
298
  byte[] data;
@@ -351,11 +339,9 @@ public class AirMapTileProvider implements TileProvider {
351
339
  .build()
352
340
  )
353
341
  .build();
354
- if (tileRefreshWorkRequest != null) {
355
- WorkManager.getInstance(this.context.getApplicationContext())
356
- .enqueueUniqueWork(fileName, ExistingWorkPolicy.KEEP, tileRefreshWorkRequest);
357
- }
358
- }
342
+ WorkManager.getInstance(this.context.getApplicationContext())
343
+ .enqueueUniqueWork(fileName, ExistingWorkPolicy.KEEP, tileRefreshWorkRequest);
344
+ }
359
345
  }
360
346
 
361
347
  byte[] fetchTile(int x, int y, int zoom) {
@@ -377,10 +363,7 @@ public class AirMapTileProvider implements TileProvider {
377
363
  buffer.flush();
378
364
 
379
365
  return buffer.toByteArray();
380
- } catch (IOException e) {
381
- e.printStackTrace();
382
- return null;
383
- } catch (OutOfMemoryError e) {
366
+ } catch (IOException | OutOfMemoryError e) {
384
367
  e.printStackTrace();
385
368
  return null;
386
369
  } finally {
@@ -416,10 +399,7 @@ public class AirMapTileProvider implements TileProvider {
416
399
  }
417
400
 
418
401
  return buffer.toByteArray();
419
- } catch (IOException e) {
420
- e.printStackTrace();
421
- return null;
422
- } catch (OutOfMemoryError e) {
402
+ } catch (IOException | OutOfMemoryError e) {
423
403
  e.printStackTrace();
424
404
  return null;
425
405
  } finally {
@@ -442,10 +422,7 @@ public class AirMapTileProvider implements TileProvider {
442
422
  out.write(image);
443
423
 
444
424
  return true;
445
- } catch (IOException e) {
446
- e.printStackTrace();
447
- return false;
448
- } catch (OutOfMemoryError e) {
425
+ } catch (IOException | OutOfMemoryError e) {
449
426
  e.printStackTrace();
450
427
  return false;
451
428
  } finally {
@@ -457,9 +434,8 @@ public class AirMapTileProvider implements TileProvider {
457
434
  if (this.tileCachePath == null) {
458
435
  return null;
459
436
  }
460
- String s = this.tileCachePath + '/' + Integer.toString(zoom) +
461
- "/" + Integer.toString(x) + "/" + Integer.toString(y);
462
- return s;
437
+ return this.tileCachePath + '/' + zoom +
438
+ "/" + x + "/" + y;
463
439
  }
464
440
 
465
441
  protected URL getTileUrl(int x, int y, int zoom) {
@@ -510,6 +486,5 @@ public class AirMapTileProvider implements TileProvider {
510
486
  }
511
487
 
512
488
  public void setCustomMode() {
513
- this.customMode = customMode;
514
489
  }
515
490
  }
@@ -10,7 +10,6 @@ import androidx.work.WorkerParameters;
10
10
 
11
11
  import java.io.ByteArrayOutputStream;
12
12
  import java.io.File;
13
- import java.io.FileInputStream;
14
13
  import java.io.FileOutputStream;
15
14
  import java.io.InputStream;
16
15
  import java.io.OutputStream;
@@ -30,8 +29,8 @@ public class AirMapTileWorker extends Worker {
30
29
 
31
30
  @Override
32
31
  public Result doWork() {
33
- byte[] image = null;
34
- URL url = null;
32
+ byte[] image;
33
+ URL url;
35
34
  String fileName = getInputData().getString("filename");
36
35
 
37
36
  try {
@@ -84,10 +83,7 @@ public class AirMapTileWorker extends Worker {
84
83
  buffer.flush();
85
84
 
86
85
  return buffer.toByteArray();
87
- } catch (IOException e) {
88
- e.printStackTrace();
89
- return null;
90
- } catch (OutOfMemoryError e) {
86
+ } catch (IOException | OutOfMemoryError e) {
91
87
  e.printStackTrace();
92
88
  return null;
93
89
  } finally {
@@ -109,10 +105,7 @@ public class AirMapTileWorker extends Worker {
109
105
  out.write(image);
110
106
 
111
107
  return true;
112
- } catch (IOException e) {
113
- e.printStackTrace();
114
- return false;
115
- } catch (OutOfMemoryError e) {
108
+ } catch (IOException | OutOfMemoryError e) {
116
109
  e.printStackTrace();
117
110
  return false;
118
111
  } finally {
@@ -87,7 +87,7 @@ public class AirMapUrlTile extends AirMapFeature {
87
87
  public void setFlipY(boolean flipY) {
88
88
  this.flipY = flipY;
89
89
  if (tileProvider != null) {
90
- tileProvider.setFlipY((boolean)flipY);
90
+ tileProvider.setFlipY(flipY);
91
91
  }
92
92
  if (tileOverlay != null) {
93
93
  tileOverlay.clearTileCache();
@@ -97,7 +97,7 @@ public class AirMapUrlTile extends AirMapFeature {
97
97
  public void setDoubleTileSize(boolean doubleTileSize) {
98
98
  this.doubleTileSize = doubleTileSize;
99
99
  if (tileProvider != null) {
100
- tileProvider.setDoubleTileSize((boolean)doubleTileSize);
100
+ tileProvider.setDoubleTileSize(doubleTileSize);
101
101
  }
102
102
  setCustomTileProviderMode();
103
103
  if (tileOverlay != null) {
@@ -149,7 +149,7 @@ public class AirMapUrlTile extends AirMapFeature {
149
149
  public void setOfflineMode(boolean offlineMode) {
150
150
  this.offlineMode = offlineMode;
151
151
  if (tileProvider != null) {
152
- tileProvider.setOfflineMode((boolean)offlineMode);
152
+ tileProvider.setOfflineMode(offlineMode);
153
153
  }
154
154
  if (tileOverlay != null) {
155
155
  tileOverlay.clearTileCache();
@@ -1,7 +1,6 @@
1
1
  package com.airbnb.android.react.maps;
2
2
 
3
3
  import android.content.Context;
4
- import android.os.Build;
5
4
  import android.util.DisplayMetrics;
6
5
  import android.view.WindowManager;
7
6
 
@@ -11,18 +10,13 @@ import com.facebook.react.uimanager.ViewGroupManager;
11
10
  import com.facebook.react.uimanager.annotations.ReactProp;
12
11
 
13
12
  public class AirMapUrlTileManager extends ViewGroupManager<AirMapUrlTile> {
14
- private DisplayMetrics metrics;
15
13
 
16
14
  public AirMapUrlTileManager(ReactApplicationContext reactContext) {
17
15
  super();
18
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
19
- metrics = new DisplayMetrics();
20
- ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
21
- .getDefaultDisplay()
22
- .getRealMetrics(metrics);
23
- } else {
24
- metrics = reactContext.getResources().getDisplayMetrics();
25
- }
16
+ DisplayMetrics metrics = new DisplayMetrics();
17
+ ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
18
+ .getDefaultDisplay()
19
+ .getRealMetrics(metrics);
26
20
  }
27
21
 
28
22
  @Override
@@ -5,10 +5,8 @@ import android.content.res.ColorStateList;
5
5
  import android.graphics.Bitmap;
6
6
  import android.graphics.Color;
7
7
  import android.graphics.Point;
8
- import android.graphics.PorterDuff;
9
- import android.graphics.Rect;
10
- import android.os.Build;
11
8
 
9
+ import androidx.annotation.NonNull;
12
10
  import androidx.annotation.Nullable;
13
11
  import androidx.core.content.PermissionChecker;
14
12
  import androidx.core.view.GestureDetectorCompat;
@@ -33,7 +31,6 @@ import com.facebook.react.bridge.WritableNativeMap;
33
31
  import com.facebook.react.bridge.Arguments;
34
32
  import com.facebook.react.uimanager.ThemedReactContext;
35
33
  import com.facebook.react.uimanager.UIManagerModule;
36
- import com.facebook.react.uimanager.ViewProps;
37
34
  import com.facebook.react.uimanager.events.EventDispatcher;
38
35
  import com.google.android.gms.maps.CameraUpdate;
39
36
  import com.google.android.gms.maps.CameraUpdateFactory;
@@ -54,7 +51,6 @@ import com.google.android.gms.maps.model.PointOfInterest;
54
51
  import com.google.android.gms.maps.model.Polygon;
55
52
  import com.google.android.gms.maps.model.Polyline;
56
53
  import com.google.android.gms.maps.model.TileOverlay;
57
- import com.google.android.gms.maps.model.VisibleRegion;
58
54
  import com.google.android.gms.maps.model.IndoorBuilding;
59
55
  import com.google.android.gms.maps.model.IndoorLevel;
60
56
  import com.google.maps.android.data.kml.KmlContainer;
@@ -78,7 +74,6 @@ import static androidx.core.content.PermissionChecker.checkSelfPermission;
78
74
  public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
79
75
  GoogleMap.OnMarkerDragListener, OnMapReadyCallback, GoogleMap.OnPoiClickListener, GoogleMap.OnIndoorStateChangeListener {
80
76
  public GoogleMap map;
81
- private KmlLayer kmlLayer;
82
77
  private ProgressBar mapLoadingProgressBar;
83
78
  private RelativeLayout mapLoadingLayout;
84
79
  private ImageView cacheImageView;
@@ -118,9 +113,9 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
118
113
  private boolean destroyed = false;
119
114
  private final ThemedReactContext context;
120
115
  private final EventDispatcher eventDispatcher;
121
- private FusedLocationSource fusedLocationSource;
116
+ private final FusedLocationSource fusedLocationSource;
122
117
 
123
- private ViewAttacherGroup attacherGroup;
118
+ private final ViewAttacherGroup attacherGroup;
124
119
  private LatLng tapLocation;
125
120
 
126
121
  private static boolean contextHasBug(Context context) {
@@ -147,9 +142,8 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
147
142
  superContext = reactContext.getCurrentActivity();
148
143
  } else if (!contextHasBug(reactContext.getApplicationContext())) {
149
144
  superContext = reactContext.getApplicationContext();
150
- } else {
151
- // ¯\_(ツ)_/¯
152
145
  }
146
+
153
147
  }
154
148
  return superContext;
155
149
  }
@@ -214,7 +208,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
214
208
  }
215
209
 
216
210
  @Override
217
- public void onMapReady(final GoogleMap map) {
211
+ public void onMapReady(@NonNull final GoogleMap map) {
218
212
  if (destroyed) {
219
213
  return;
220
214
  }
@@ -243,9 +237,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
243
237
  coordinate.putDouble("accuracy", location.getAccuracy());
244
238
  coordinate.putDouble("speed", location.getSpeed());
245
239
  coordinate.putDouble("heading", location.getBearing());
246
- if(android.os.Build.VERSION.SDK_INT >= 18){
247
240
  coordinate.putBoolean("isFromMockProvider", location.isFromMockProvider());
248
- }
249
241
 
250
242
  event.putMap("coordinate", coordinate);
251
243
 
@@ -531,8 +523,8 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
531
523
 
532
524
  ReadableMap center = camera.getMap("center");
533
525
  if (center != null) {
534
- Double lng = center.getDouble("longitude");
535
- Double lat = center.getDouble("latitude");
526
+ double lng = center.getDouble("longitude");
527
+ double lat = center.getDouble("latitude");
536
528
  builder.target(new LatLng(lat, lng));
537
529
  }
538
530
 
@@ -628,24 +620,13 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
628
620
  color = Color.parseColor("#606060");
629
621
  }
630
622
 
631
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
632
- ColorStateList progressTintList = ColorStateList.valueOf(loadingIndicatorColor);
633
- ColorStateList secondaryProgressTintList = ColorStateList.valueOf(loadingIndicatorColor);
634
- ColorStateList indeterminateTintList = ColorStateList.valueOf(loadingIndicatorColor);
623
+ ColorStateList progressTintList = ColorStateList.valueOf(loadingIndicatorColor);
624
+ ColorStateList secondaryProgressTintList = ColorStateList.valueOf(loadingIndicatorColor);
625
+ ColorStateList indeterminateTintList = ColorStateList.valueOf(loadingIndicatorColor);
635
626
 
636
- this.mapLoadingProgressBar.setProgressTintList(progressTintList);
637
- this.mapLoadingProgressBar.setSecondaryProgressTintList(secondaryProgressTintList);
638
- this.mapLoadingProgressBar.setIndeterminateTintList(indeterminateTintList);
639
- } else {
640
- PorterDuff.Mode mode = PorterDuff.Mode.SRC_IN;
641
- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
642
- mode = PorterDuff.Mode.MULTIPLY;
643
- }
644
- if (this.mapLoadingProgressBar.getIndeterminateDrawable() != null)
645
- this.mapLoadingProgressBar.getIndeterminateDrawable().setColorFilter(color, mode);
646
- if (this.mapLoadingProgressBar.getProgressDrawable() != null)
647
- this.mapLoadingProgressBar.getProgressDrawable().setColorFilter(color, mode);
648
- }
627
+ this.mapLoadingProgressBar.setProgressTintList(progressTintList);
628
+ this.mapLoadingProgressBar.setSecondaryProgressTintList(secondaryProgressTintList);
629
+ this.mapLoadingProgressBar.setIndeterminateTintList(indeterminateTintList);
649
630
  }
650
631
  }
651
632
 
@@ -931,8 +912,8 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
931
912
 
932
913
  for (int i = 0; i < coordinatesArray.size(); i++) {
933
914
  ReadableMap latLng = coordinatesArray.getMap(i);
934
- Double lat = latLng.getDouble("latitude");
935
- Double lng = latLng.getDouble("longitude");
915
+ double lat = latLng.getDouble("latitude");
916
+ double lng = latLng.getDouble("longitude");
936
917
  builder.include(new LatLng(lat, lng));
937
918
  }
938
919
 
@@ -986,12 +967,12 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
986
967
 
987
968
  LatLngBounds.Builder builder = new LatLngBounds.Builder();
988
969
 
989
- Double latNE = northEast.getDouble("latitude");
990
- Double lngNE = northEast.getDouble("longitude");
970
+ double latNE = northEast.getDouble("latitude");
971
+ double lngNE = northEast.getDouble("longitude");
991
972
  builder.include(new LatLng(latNE, lngNE));
992
973
 
993
- Double latSW = southWest.getDouble("latitude");
994
- Double lngSW = southWest.getDouble("longitude");
974
+ double latSW = southWest.getDouble("latitude");
975
+ double lngSW = southWest.getDouble("longitude");
995
976
  builder.include(new LatLng(latSW, lngSW));
996
977
 
997
978
  LatLngBounds bounds = builder.build();
@@ -1188,7 +1169,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
1188
1169
  return;
1189
1170
  }
1190
1171
 
1191
- kmlLayer = new KmlLayer(map, kmlStream, context);
1172
+ KmlLayer kmlLayer = new KmlLayer(map, kmlStream, context);
1192
1173
  kmlLayer.addLayerToMap();
1193
1174
 
1194
1175
  WritableMap pointers = new WritableNativeMap();
@@ -1211,7 +1192,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
1211
1192
  container = container.getContainers().iterator().next();
1212
1193
  }
1213
1194
 
1214
- Integer index = 0;
1195
+ int index = 0;
1215
1196
  for (KmlPlacemark placemark : container.getPlacemarks()) {
1216
1197
  MarkerOptions options = new MarkerOptions();
1217
1198
 
@@ -1265,13 +1246,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
1265
1246
 
1266
1247
  manager.pushEvent(context, this, "onKmlReady", pointers);
1267
1248
 
1268
- } catch (XmlPullParserException e) {
1269
- e.printStackTrace();
1270
- } catch (IOException e) {
1271
- e.printStackTrace();
1272
- } catch (InterruptedException e) {
1273
- e.printStackTrace();
1274
- } catch (ExecutionException e) {
1249
+ } catch (XmlPullParserException | IOException | InterruptedException | ExecutionException e) {
1275
1250
  e.printStackTrace();
1276
1251
  }
1277
1252
  }
@@ -2,10 +2,6 @@ package com.airbnb.android.react.maps;
2
2
 
3
3
  import android.content.Context;
4
4
 
5
- import android.util.Log;
6
-
7
- import com.google.android.gms.maps.GoogleMap;
8
- import com.google.android.gms.maps.model.TileOverlay;
9
5
  import com.google.android.gms.maps.model.TileOverlayOptions;
10
6
  import com.google.android.gms.maps.model.UrlTileProvider;
11
7
 
@@ -20,7 +16,7 @@ public class AirMapWMSTile extends AirMapUrlTile {
20
16
 
21
17
  class AIRMapWMSTileProvider extends UrlTileProvider {
22
18
  private String urlTemplate;
23
- private int tileSize;
19
+ private final int tileSize;
24
20
 
25
21
  public AIRMapWMSTileProvider(int width, int height, String urlTemplate) {
26
22
  super(width, height);
@@ -80,8 +76,6 @@ public class AirMapWMSTile extends AirMapUrlTile {
80
76
  }
81
77
  }
82
78
 
83
- private AIRMapGSUrlTileProvider tileProvider;
84
-
85
79
  public AirMapWMSTile(Context context) {
86
80
  super(context);
87
81
  }
@@ -91,10 +85,10 @@ public class AirMapWMSTile extends AirMapUrlTile {
91
85
  TileOverlayOptions options = new TileOverlayOptions();
92
86
  options.zIndex(zIndex);
93
87
  options.transparency(1 - this.opacity);
94
- this.tileProvider = new AIRMapGSUrlTileProvider((int)this.tileSize, this.urlTemplate,
95
- (int)this.maximumZ, (int)this.maximumNativeZ, (int)this.minimumZ, this.tileCachePath,
96
- (int)this.tileCacheMaxAge, this.offlineMode, this.context, this.customTileProviderNeeded);
97
- options.tileProvider(this.tileProvider);
88
+ AIRMapGSUrlTileProvider tileProvider = new AIRMapGSUrlTileProvider((int) this.tileSize, this.urlTemplate,
89
+ (int) this.maximumZ, (int) this.maximumNativeZ, (int) this.minimumZ, this.tileCachePath,
90
+ (int) this.tileCacheMaxAge, this.offlineMode, this.context, this.customTileProviderNeeded);
91
+ options.tileProvider(tileProvider);
98
92
  return options;
99
93
  }
100
94
  }
@@ -1,7 +1,6 @@
1
1
  package com.airbnb.android.react.maps;
2
2
 
3
3
  import android.content.Context;
4
- import android.os.Build;
5
4
  import android.util.DisplayMetrics;
6
5
  import android.view.WindowManager;
7
6
 
@@ -11,18 +10,13 @@ import com.facebook.react.uimanager.ViewGroupManager;
11
10
  import com.facebook.react.uimanager.annotations.ReactProp;
12
11
 
13
12
  public class AirMapWMSTileManager extends ViewGroupManager<AirMapWMSTile> {
14
- private DisplayMetrics metrics;
15
13
 
16
14
  public AirMapWMSTileManager(ReactApplicationContext reactContext) {
17
15
  super();
18
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
19
- metrics = new DisplayMetrics();
20
- ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
21
- .getDefaultDisplay()
22
- .getRealMetrics(metrics);
23
- } else {
24
- metrics = reactContext.getResources().getDisplayMetrics();
25
- }
16
+ DisplayMetrics metrics = new DisplayMetrics();
17
+ ((WindowManager) reactContext.getSystemService(Context.WINDOW_SERVICE))
18
+ .getDefaultDisplay()
19
+ .getRealMetrics(metrics);
26
20
  }
27
21
 
28
22
  @Override
@@ -18,10 +18,6 @@ import java.nio.channels.ReadableByteChannel;
18
18
 
19
19
  public class FileUtil extends AsyncTask<String, Void, InputStream> {
20
20
 
21
- private final String NAME = "FileUtil";
22
- private final String TEMP_FILE_SUFFIX = "temp";
23
-
24
- private Exception exception;
25
21
  private Context context;
26
22
 
27
23
  public FileUtil(Context context) {
@@ -39,7 +35,6 @@ public class FileUtil extends AsyncTask<String, Void, InputStream> {
39
35
  }
40
36
  return context.getContentResolver().openInputStream(fileContentUri);
41
37
  } catch (Exception e) {
42
- this.exception = e;
43
38
  FLog.e(
44
39
  ReactConstants.TAG,
45
40
  "Could not retrieve file for contentUri " + urls[0],
@@ -51,6 +46,8 @@ public class FileUtil extends AsyncTask<String, Void, InputStream> {
51
46
  private InputStream getDownloadFileInputStream(Context context, Uri uri)
52
47
  throws IOException {
53
48
  final File outputDir = context.getApplicationContext().getCacheDir();
49
+ String NAME = "FileUtil";
50
+ String TEMP_FILE_SUFFIX = "temp";
54
51
  final File file = File.createTempFile(NAME, TEMP_FILE_SUFFIX, outputDir);
55
52
  file.deleteOnExit();
56
53
 
@@ -49,7 +49,7 @@ public class ImageReader {
49
49
  imageReference = dataSource.getResult();
50
50
  if (imageReference != null) {
51
51
  CloseableImage image = imageReference.get();
52
- if (image != null && image instanceof CloseableStaticBitmap) {
52
+ if (image instanceof CloseableStaticBitmap) {
53
53
  CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image;
54
54
  Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap();
55
55
  if (bitmap != null) {
@@ -104,11 +104,9 @@ public class ImageReader {
104
104
  logoHolder.setController(controller);
105
105
  } else {
106
106
  BitmapDescriptor iconBitmapDescriptor = getBitmapDescriptorByName(uri);
107
- if (iconBitmapDescriptor != null) {
108
- imp.setIconBitmapDescriptor(iconBitmapDescriptor);
109
- imp.setIconBitmap(BitmapFactory.decodeResource(this.resources, getDrawableResourceByName
110
- (uri)));
111
- }
107
+ imp.setIconBitmapDescriptor(iconBitmapDescriptor);
108
+ imp.setIconBitmap(BitmapFactory.decodeResource(this.resources, getDrawableResourceByName
109
+ (uri)));
112
110
  imp.update();
113
111
  }
114
112