@Override public MapView createViewInstance(ThemedReactContext context) { reactContext = context; mView = new MapView(context); mView.onCreate(null); mView.onResume(); map = mView.getMap(); if (map == null) { sendMapError("Map is null", "map_null"); } else { map.getUiSettings().setMyLocationButtonEnabled(true); map.setMyLocationEnabled(true); // We need to be sure to disable location-tracking when app enters background, in-case some // other module // has acquired a wake-lock and is controlling location-updates, otherwise, location-manager // will be left // updating location constantly, killing the battery, even though some other location-mgmt // module may // desire to shut-down location-services. LifecycleEventListener listener = new LifecycleEventListener() { @Override public void onHostResume() { map.setMyLocationEnabled(true); } @Override public void onHostPause() { map.setMyLocationEnabled(false); } @Override public void onHostDestroy() {} }; context.addLifecycleEventListener(listener); try { MapsInitializer.initialize(context.getApplicationContext()); map.setOnCameraChangeListener(getCameraChangeListener()); map.setOnMarkerClickListener(getMarkerClickListener()); // add location button click listener map.setOnMyLocationButtonClickListener( new GoogleMap.OnMyLocationButtonClickListener() { @Override public boolean onMyLocationButtonClick() { CameraPosition position = map.getCameraPosition(); mlastZoom = (int) position.zoom; return false; } }); } catch (Exception e) { e.printStackTrace(); sendMapError("Map initialize error", "map_init_error"); } } return mView; }