Skip to content

Commit 223d177

Browse files
committed
feat: add typescript animateCamera methods and types
1 parent 95db398 commit 223d177

6 files changed

Lines changed: 53 additions & 3 deletions

File tree

src/auto/useNavigationAuto.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,20 @@ export const useNavigationAuto = (): UseNavigationAutoResult => {
370370
return NavAutoModule.moveCamera(cameraPosition);
371371
},
372372

373+
// set default values to transition similar to Google Maps app
374+
animateCamera: (
375+
cameraPosition: CameraPosition,
376+
duration?: number | null
377+
) => {
378+
return NavAutoModule.animateCamera(
379+
{
380+
...cameraPosition,
381+
zoom: cameraPosition.zoom ?? 15,
382+
},
383+
duration === undefined ? 500 : duration
384+
);
385+
},
386+
373387
setPadding: (padding: Padding) => {
374388
const { top = 0, left = 0, bottom = 0, right = 0 } = padding;
375389
return NavAutoModule.setMapPadding(top, left, bottom, right);

src/maps/mapView/mapView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const MapView = (props: MapViewProps): React.JSX.Element => {
5252
target: props.initialCameraPosition?.target ?? null,
5353
bearing: props.initialCameraPosition?.bearing ?? 0.0,
5454
tilt: props.initialCameraPosition?.tilt ?? 0.0,
55-
zoom: props.initialCameraPosition?.zoom ?? 0.0,
55+
zoom: props.initialCameraPosition?.zoom ?? 15,
5656
},
5757
}),
5858
};

src/maps/mapView/mapViewController.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import NavViewModule from '../../native/NativeNavViewModule';
1818
import { processColorValue, colorIntToRGBA } from '../../shared';
19-
import type { Location } from '../../shared/types';
19+
import type { Location } from '../../shared';
2020
import type {
2121
CameraPosition,
2222
Circle,
@@ -195,6 +195,21 @@ export const getMapViewController = (nativeID: string): MapViewController => {
195195
return await NavViewModule.moveCamera(nativeID, cameraPosition);
196196
},
197197

198+
animateCamera: async (
199+
cameraPosition: CameraPosition,
200+
duration?: number | null
201+
) => {
202+
// set default values to transition similar to Google Maps app
203+
return await NavViewModule.animateCamera(
204+
nativeID,
205+
{
206+
...cameraPosition,
207+
zoom: cameraPosition.zoom ?? 15,
208+
},
209+
duration === undefined ? 500 : duration
210+
);
211+
},
212+
198213
setPadding: async _padding => {
199214
console.warn('setPadding should be set via props in new architecture');
200215
},

src/maps/mapView/types.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,19 @@ export interface MapViewController {
376376
*
377377
* @param cameraPosition - Defines the position the camera will take with the move.
378378
*/
379-
moveCamera(cameraPosition: CameraPosition): void;
379+
moveCamera(cameraPosition: CameraPosition): Promise<void>;
380+
381+
/**
382+
* Animate the camera to a new position based on the object given.
383+
*
384+
* @param cameraPosition - Defines the position the camera will animate to.
385+
* @param duration - Animation duration in milliseconds. Defaults to 500 ms when undefined.
386+
* Pass null to use the native SDK's default animation duration.
387+
*/
388+
animateCamera(
389+
cameraPosition: CameraPosition,
390+
duration?: number | null
391+
): Promise<void>;
380392

381393
/**
382394
* Sets padding to the map.

src/native/NativeNavAutoModule.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ export interface Spec extends TurboModule {
138138
addPolygon(options: PolygonOptionsSpec): Promise<Polygon>;
139139
addGroundOverlay(options: GroundOverlayOptionsSpec): Promise<GroundOverlay>;
140140
moveCamera(cameraPosition: CameraPositionSpec): Promise<void>;
141+
animateCamera(
142+
cameraPosition: CameraPositionSpec,
143+
duration?: WithDefault<Double, null>
144+
): Promise<void>;
141145
removeMarker(id: string): Promise<boolean>;
142146
removePolyline(id: string): Promise<boolean>;
143147
removePolygon(id: string): Promise<boolean>;

src/native/NativeNavViewModule.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ export interface Spec extends TurboModule {
148148
nativeID: string,
149149
cameraPosition: CameraPositionSpec
150150
): Promise<void>;
151+
animateCamera(
152+
nativeID: string,
153+
cameraPosition: CameraPositionSpec,
154+
duration?: WithDefault<Double, null>
155+
): Promise<void>;
151156
getCameraPosition(nativeID: string): Promise<CameraPosition>;
152157
getMyLocation(nativeID: string): Promise<Location>;
153158
getUiSettings(nativeID: string): Promise<UISettings>;

0 commit comments

Comments
 (0)