Skip to content

Commit 38770da

Browse files
foyarashchristopherdro
authored andcommitted
Fix initial region android (react-native-maps#1563)
* Fix initial region on android * Fix initial region for android
1 parent c6394b7 commit 38770da

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

lib/android/src/main/java/com/airbnb/android/react/maps/AirMapManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ public void setRegion(AirMapView view, ReadableMap region) {
7575
view.setRegion(region);
7676
}
7777

78+
@ReactProp(name = "initialRegion")
79+
public void setInitialRegion(AirMapView view, ReadableMap initialRegion) {
80+
view.setInitialRegion(initialRegion);
81+
}
82+
7883
@ReactProp(name = "mapType")
7984
public void setMapType(AirMapView view, @Nullable String mapType) {
8085
int typeId = MAP_TYPES.get(mapType);

lib/android/src/main/java/com/airbnb/android/react/maps/AirMapView.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public class AirMapView extends MapView implements GoogleMap.InfoWindowAdapter,
7070
private boolean handlePanDrag = false;
7171
private boolean moveOnMarkerPress = true;
7272
private boolean cacheEnabled = false;
73+
private boolean initialRegionSet = false;
7374

7475
private static final String[] PERMISSIONS = new String[]{
7576
"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"};
@@ -360,6 +361,13 @@ public synchronized void doDestroy() {
360361
onDestroy();
361362
}
362363

364+
public void setInitialRegion(ReadableMap initialRegion) {
365+
if (!initialRegionSet && initialRegion != null) {
366+
setRegion(initialRegion);
367+
initialRegionSet = true;
368+
}
369+
}
370+
363371
public void setRegion(ReadableMap region) {
364372
if (region == null) return;
365373

@@ -733,7 +741,7 @@ public void run() {
733741
eventDispatcher.dispatchEvent(new RegionChangeEvent(getId(), bounds, center, true));
734742
}
735743
}
736-
744+
737745
timerHandler.postDelayed(this, 100);
738746
}
739747
};

lib/components/MapView.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,10 +462,13 @@ class MapView extends React.Component {
462462
const { layout } = e.nativeEvent;
463463
if (!layout.width || !layout.height) return;
464464
if (this.state.isReady && !this.__layoutCalled) {
465-
const region = this.props.region || this.props.initialRegion;
465+
const { region, initialRegion } = this.props;
466466
if (region) {
467467
this.__layoutCalled = true;
468468
this.map.setNativeProps({ region });
469+
} else if (initialRegion) {
470+
this.__layoutCalled = true;
471+
this.map.setNativeProps({ initialRegion });
469472
}
470473
}
471474
if (this.props.onLayout) {

0 commit comments

Comments
 (0)