Skip to content

Commit 72e70bb

Browse files
feat: add map padding
1 parent 17f5458 commit 72e70bb

File tree

12 files changed

+118
-1
lines changed

12 files changed

+118
-1
lines changed

android/src/main/java/com/google/android/react/navsdk/Command.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public enum Command {
5454
REMOVE_CIRCLE(35, "removeCircle"),
5555
REMOVE_GROUND_OVERLAY(36, "removeGroundOverlay"),
5656
SET_ZOOM_CONTROLS_ENABLED(37, "setZoomControlsEnabled"),
57-
SET_RECENTER_BUTTON_ENABLED(38, "setRecenterButtonEnabled");
57+
SET_RECENTER_BUTTON_ENABLED(38, "setRecenterButtonEnabled"),
58+
SET_PADDING(39, "setPadding");
5859

5960
private final int value;
6061
private final String name;

android/src/main/java/com/google/android/react/navsdk/MapViewController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,12 @@ public void setFollowingPerspective(int jsValue) {
536536
mGoogleMap.followMyLocation(EnumTranslationUtil.getCameraPerspectiveFromJsValue(jsValue));
537537
}
538538

539+
public void setPadding(int top, int left, int bottom, int right) {
540+
if (mGoogleMap != null) {
541+
mGoogleMap.setPadding(left, top, right, bottom);
542+
}
543+
}
544+
539545
private String fetchJsonFromUrl(String urlString) throws IOException {
540546
URL url = new URL(urlString);
541547
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

android/src/main/java/com/google/android/react/navsdk/NavAutoModule.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,19 @@ public void isAutoScreenAvailable(final Promise promise) {
506506
promise.resolve(mMapViewController != null);
507507
}
508508

509+
@ReactMethod
510+
public void setPadding(
511+
final Integer top, final Integer left, final Integer bottom, final Integer right) {
512+
UiThreadUtil.runOnUiThread(
513+
() -> {
514+
if (mMapViewController == null) {
515+
return;
516+
}
517+
518+
mMapViewController.setPadding(top, left, bottom, right);
519+
});
520+
}
521+
509522
public void sendScreenState(boolean available) {
510523
WritableNativeArray params = new WritableNativeArray();
511524
params.pushBoolean(available);

android/src/main/java/com/google/android/react/navsdk/NavViewManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ public Map<String, Integer> getCommandsMap() {
119119
map.put(REMOVE_GROUND_OVERLAY.toString(), REMOVE_GROUND_OVERLAY.getValue());
120120
map.put(SET_HEADER_ENABLED.toString(), SET_HEADER_ENABLED.getValue());
121121
map.put(SET_FOOTER_ENABLED.toString(), SET_FOOTER_ENABLED.getValue());
122+
map.put(SET_PADDING.toString(), SET_PADDING.getValue());
122123
return map;
123124
}
124125

@@ -298,6 +299,10 @@ public void receiveCommand(
298299
case REMOVE_GROUND_OVERLAY:
299300
getFragmentForRoot(root).getMapController().removeGroundOverlay(args.getString(0));
300301
break;
302+
case SET_PADDING:
303+
getFragmentForRoot(root)
304+
.getMapController()
305+
.setPadding(args.getInt(0), args.getInt(1), args.getInt(2), args.getInt(3));
301306
}
302307
}
303308

example/src/controls/mapsControls.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ const MapsControls: React.FC<MapControlsProps> = ({ mapViewController }) => {
4141
const [enableLocationMarker, setEnableLocationMarker] = useState(true);
4242
const [latitude, onLatChanged] = useState('');
4343
const [longitude, onLngChanged] = useState('');
44+
const [horizontalPadding, setHorizontalPadding] = useState('');
45+
const [verticalPadding, setVerticalPadding] = useState('');
4446

4547
useEffect(() => {
4648
if (zoom !== null) {
@@ -195,6 +197,26 @@ const MapsControls: React.FC<MapControlsProps> = ({ mapViewController }) => {
195197
mapViewController.clearMapView();
196198
};
197199

200+
const onHorizontalPaddingChanged = (padding: string) => {
201+
mapViewController.setPadding(
202+
Number(verticalPadding),
203+
Number(padding),
204+
Number(verticalPadding),
205+
Number(padding)
206+
);
207+
setHorizontalPadding(padding);
208+
};
209+
210+
const onVerticalPaddingChanged = (padding: string) => {
211+
mapViewController.setPadding(
212+
Number(padding),
213+
Number(horizontalPadding),
214+
Number(padding),
215+
Number(horizontalPadding)
216+
);
217+
setVerticalPadding(padding);
218+
};
219+
198220
return (
199221
<View>
200222
<TextInput
@@ -280,6 +302,22 @@ const MapsControls: React.FC<MapControlsProps> = ({ mapViewController }) => {
280302
dropdownStyle={styles.dropdownMenuStyle}
281303
/>
282304
</View>
305+
<TextInput
306+
style={styles.input}
307+
onChangeText={onHorizontalPaddingChanged}
308+
value={horizontalPadding}
309+
placeholder="Horizontal padding"
310+
placeholderTextColor="#000"
311+
keyboardType="numeric"
312+
/>
313+
<TextInput
314+
style={styles.input}
315+
onChangeText={onVerticalPaddingChanged}
316+
value={verticalPadding}
317+
placeholder="Vertical padding"
318+
placeholderTextColor="#000"
319+
keyboardType="numeric"
320+
/>
283321
</View>
284322
);
285323
};

ios/react-native-navigation-sdk/NavAutoModule.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,19 @@ + (void)unregisterNavAutoModuleReadyCallback {
387387
});
388388
}
389389

390+
RCT_EXPORT_METHOD(setPadding
391+
: (nonnull NSNumber *)top left
392+
: (nonnull NSNumber *)left bottom
393+
: (nonnull NSNumber *)bottom right
394+
: (nonnull NSNumber *)right) {
395+
dispatch_async(dispatch_get_main_queue(), ^{
396+
if (self->_viewController) {
397+
[self->_viewController setPadding:UIEdgeInsetsMake(top.floatValue, left.floatValue,
398+
bottom.floatValue, right.floatValue)];
399+
}
400+
});
401+
}
402+
390403
- (void)onScreenStateChange:(BOOL)available {
391404
[self sendCommandToReactNative:@"onAutoScreenAvailabilityChanged"
392405
args:[NSNumber numberWithBool:available]];

ios/react-native-navigation-sdk/NavViewController.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ typedef void (^OnArrayResult)(NSArray *_Nullable result);
8383
- (void)removeGroundOverlay:(NSString *)overlayId;
8484
- (BOOL)attachToNavigationSession:(GMSNavigationSession *)session;
8585
- (void)setTravelMode:(GMSNavigationTravelMode)travelMode;
86+
- (void)setPadding:(UIEdgeInsets)insets;
8687
//- (void)removeNavigationListeners;
8788
@end
8889

ios/react-native-navigation-sdk/NavViewController.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,4 +661,8 @@ - (BOOL)compare:(nullable id)userData to:(NSString *)elementId {
661661
return [userData[0] isEqualToString:elementId];
662662
}
663663

664+
- (void)setPadding:(UIEdgeInsets)insets {
665+
_mapView.padding = insets;
666+
}
667+
664668
@end

ios/react-native-navigation-sdk/RCTNavViewManager.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,4 +426,17 @@ - (void)unregisterViewControllerForTag:(NSNumber *)reactTag {
426426
});
427427
}
428428

429+
RCT_EXPORT_METHOD(setPadding
430+
: (nonnull NSNumber *)reactTag top
431+
: (nonnull NSNumber *)top left
432+
: (nonnull NSNumber *)left bottom
433+
: (nonnull NSNumber *)bottom right
434+
: (nonnull NSNumber *)right) {
435+
dispatch_async(dispatch_get_main_queue(), ^{
436+
NavViewController *viewController = [self getViewControllerForTag:reactTag];
437+
[viewController setPadding:UIEdgeInsetsMake(top.floatValue, left.floatValue, bottom.floatValue,
438+
right.floatValue)];
439+
});
440+
}
441+
429442
@end

src/auto/useNavigationAuto.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,15 @@ export const useNavigationAuto = (): {
188188
moveCamera: (cameraPosition: CameraPosition) => {
189189
return NavAutoModule.moveCamera(cameraPosition);
190190
},
191+
192+
setPadding: (
193+
top: number,
194+
left: number,
195+
bottom: number,
196+
right: number
197+
) => {
198+
return NavAutoModule.setPadding(top, left, bottom, right);
199+
},
191200
}),
192201
[moduleListenersHandler]
193202
);

0 commit comments

Comments
 (0)