Skip to content

Commit

Permalink
Fix/initial region (#308)
Browse files Browse the repository at this point in the history
* fix: initialRegion for maps

* feat: update README.md

* build: version 4.8.3
  • Loading branch information
Kt00s authored Nov 6, 2024
1 parent 67bb47e commit b478931
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 28 deletions.
54 changes: 27 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,33 +231,33 @@ type YandexLogoPadding = {
#### Доступные `props` для компонента **MapView**:
| Название | Тип | Стандартное значение | Описание |
|--|--|--|--|
| showUserPosition | boolean | true | Отслеживание геоданных и отображение позиции пользователя |
| followUser | boolean | true | слежение камеры за пользователем |
| userLocationIcon | ImageSource | false | Иконка для позиции пользователя. Доступны те же значения что и у компонента Image из React Native |
| userLocationIconScale | number | 1 | Масштабирование иконки пользователя |
| initialRegion | InitialRegion | | Изначальное местоположение карты при загрузке |
| interactive | boolean | true | Интерактивная ли карта (перемещение по карте, отслеживание нажатий) |
| nightMode | boolean | false | Использование ночного режима |
| onMapLoaded | function | | Колбек на загрузку карты |
| onCameraPositionChange | function | | Колбек на изменение положения камеры |
| onCameraPositionChangeEnd | function | | Колбек при завершении изменения положения камеры |
| onMapPress | function | | Событие нажития на карту. Возвращает координаты точки на которую нажали |
| onMapLongPress | function | | Событие долгого нажития на карту. Возвращает координаты точки на которую нажали |
| userLocationAccuracyFillColor | string | | Цвет фона зоны точности определения позиции пользователя |
| userLocationAccuracyStrokeColor | string | | Цвет границы зоны точности определения позиции пользователя |
| userLocationAccuracyStrokeWidth | number | | Толщина зоны точности определения позиции пользователя |
| scrollGesturesEnabled | boolean | true | Включены ли жесты скролла |
| zoomGesturesEnabled | boolean | true | Включены ли жесты зума |
| tiltGesturesEnabled | boolean | true | Включены ли жесты наклона камеры двумя пальцами |
| rotateGesturesEnabled | boolean | true | Включены ли жесты поворота камеры |
| fastTapEnabled | boolean | true | Убрана ли задержка в 300мс при клике/тапе |
| clusterColor | string | 'red' | Цвет фона метки-кластера |
| maxFps | number | 60 | Максимальная частота обновления карты |
| logoPosition | YandexLogoPosition | {} | Позиция логотипа Яндекса на карте |
| logoPadding | YandexLogoPadding | {} | Отступ логотипа Яндекса на карте |
| mapStyle | string | {} | Стили карты согласно [документации](https://yandex.ru/dev/maps/mapkit/doc/dg/concepts/style.html) |
| Название | Тип | Стандартное значение | Описание |
|--|--|--|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| showUserPosition | boolean | true | Отслеживание геоданных и отображение позиции пользователя. В Андройд нужно запросить `android.permission.ACCESS_FINE_LOCATION`. В Ios нужно добавить `NSLocationWhenInUseUsageDescription` в Info.plst |
| followUser | boolean | true | слежение камеры за пользователем |
| userLocationIcon | ImageSource | false | Иконка для позиции пользователя. Доступны те же значения что и у компонента Image из React Native |
| userLocationIconScale | number | 1 | Масштабирование иконки пользователя |
| initialRegion | InitialRegion | | Изначальное местоположение карты при загрузке |
| interactive | boolean | true | Интерактивная ли карта (перемещение по карте, отслеживание нажатий) |
| nightMode | boolean | false | Использование ночного режима |
| onMapLoaded | function | | Колбек на загрузку карты |
| onCameraPositionChange | function | | Колбек на изменение положения камеры |
| onCameraPositionChangeEnd | function | | Колбек при завершении изменения положения камеры |
| onMapPress | function | | Событие нажития на карту. Возвращает координаты точки на которую нажали |
| onMapLongPress | function | | Событие долгого нажития на карту. Возвращает координаты точки на которую нажали |
| userLocationAccuracyFillColor | string | | Цвет фона зоны точности определения позиции пользователя |
| userLocationAccuracyStrokeColor | string | | Цвет границы зоны точности определения позиции пользователя |
| userLocationAccuracyStrokeWidth | number | | Толщина зоны точности определения позиции пользователя |
| scrollGesturesEnabled | boolean | true | Включены ли жесты скролла |
| zoomGesturesEnabled | boolean | true | Включены ли жесты зума |
| tiltGesturesEnabled | boolean | true | Включены ли жесты наклона камеры двумя пальцами |
| rotateGesturesEnabled | boolean | true | Включены ли жесты поворота камеры |
| fastTapEnabled | boolean | true | Убрана ли задержка в 300мс при клике/тапе |
| clusterColor | string | 'red' | Цвет фона метки-кластера |
| maxFps | number | 60 | Максимальная частота обновления карты |
| logoPosition | YandexLogoPosition | {} | Позиция логотипа Яндекса на карте |
| logoPadding | YandexLogoPadding | {} | Отступ логотипа Яндекса на карте |
| mapStyle | string | {} | Стили карты согласно [документации](https://yandex.ru/dev/maps/mapkit/doc/dg/concepts/style.html) |
#### Доступные методы для компонента **MapView**:
Expand Down
3 changes: 3 additions & 0 deletions android/src/main/java/ru/vvdev/yamap/view/YamapView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ open class YamapView(context: Context?) : MapView(context), UserLocationObjectLi
private var userLocationAccuracyStrokeWidth = 0f
private var trafficLayer: TrafficLayer? = null
private var maxFps = 60f
private var initializedRegion = false;

private var userLocationView: UserLocationView? = null

Expand Down Expand Up @@ -472,6 +473,7 @@ open class YamapView(context: Context?) : MapView(context), UserLocationObjectLi
}

fun setInitialRegion(params: ReadableMap?) {
if (initializedRegion) return
if ((!params!!.hasKey("lat") || params.isNull("lat")) || (!params.hasKey("lon") && params.isNull(
"lon"
))
Expand Down Expand Up @@ -500,6 +502,7 @@ open class YamapView(context: Context?) : MapView(context), UserLocationObjectLi
initialRegionTilt
)
setCenter(initialCameraPosition, 0f, 0)
initializedRegion = true
}

fun setLogoPosition(params: ReadableMap?) {
Expand Down
4 changes: 4 additions & 0 deletions ios/View/RNCYMView.m
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ @implementation RNCYMView {
UIColor* clusterColor;
NSMutableArray<YMKPlacemarkMapObject *>* placemarks;
BOOL userClusters;
Boolean initializedRegion;
}

- (instancetype)init {
Expand All @@ -50,6 +51,7 @@ - (instancetype)init {
clusterColor=nil;
userClusters=NO;
clusterCollection = [self.mapWindow.map.mapObjects addClusterizedPlacemarkCollectionWithClusterListener:self];
initializedRegion = NO;
return self;
}

Expand Down Expand Up @@ -195,6 +197,7 @@ - (BOOL)onClusterTapWithCluster:(nonnull YMKCluster *)cluster {
}

- (void)setInitialRegion:(NSDictionary *)initialParams {
if (initializedRegion) return;
if ([initialParams valueForKey:@"lat"] == nil || [initialParams valueForKey:@"lon"] == nil) return;

float initialZoom = 10.f;
Expand All @@ -210,6 +213,7 @@ - (void)setInitialRegion:(NSDictionary *)initialParams {
YMKPoint *initialRegionCenter = [RCTConvert YMKPoint:@{@"lat" : [initialParams valueForKey:@"lat"], @"lon" : [initialParams valueForKey:@"lon"]}];
YMKCameraPosition *initialRegioPosition = [YMKCameraPosition cameraPositionWithTarget:initialRegionCenter zoom:initialZoom azimuth:initialAzimuth tilt:initialTilt];
[self.mapWindow.map moveWithCameraPosition:initialRegioPosition];
initializedRegion = YES;
}


Expand Down
4 changes: 4 additions & 0 deletions ios/View/RNYMView.m
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ @implementation RNYMView {
UIColor *userLocationAccuracyFillColor;
UIColor *userLocationAccuracyStrokeColor;
float userLocationAccuracyStrokeWidth;
Boolean initializedRegion;
}

- (instancetype)init {
Expand Down Expand Up @@ -83,6 +84,7 @@ - (instancetype)init {
[self.mapWindow.map addCameraListenerWithCameraListener:self];
[self.mapWindow.map addInputListenerWithInputListener:(id<YMKMapInputListener>) self];
[self.mapWindow.map setMapLoadedListenerWithMapLoadedListener:self];
initializedRegion = NO;
return self;
}

Expand Down Expand Up @@ -353,6 +355,7 @@ - (void)setMapType:(NSString *)type {
}

- (void)setInitialRegion:(NSDictionary *)initialParams {
if (initializedRegion) return;
if ([initialParams valueForKey:@"lat"] == nil || [initialParams valueForKey:@"lon"] == nil) return;

float initialZoom = 10.f;
Expand All @@ -368,6 +371,7 @@ - (void)setInitialRegion:(NSDictionary *)initialParams {
YMKPoint *initialRegionCenter = [RCTConvert YMKPoint:@{@"lat" : [initialParams valueForKey:@"lat"], @"lon" : [initialParams valueForKey:@"lon"]}];
YMKCameraPosition *initialRegioPosition = [YMKCameraPosition cameraPositionWithTarget:initialRegionCenter zoom:initialZoom azimuth:initialAzimuth tilt:initialTilt];
[self.mapWindow.map moveWithCameraPosition:initialRegioPosition];
initializedRegion = YES;
}

- (void)setTrafficVisible:(BOOL)traffic {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-yamap",
"version": "4.8.2",
"version": "4.8.3",
"description": "Yandex.MapKit and Yandex.Geocoder for react-native",
"main": "build/index.js",
"types": "build/index.d.ts",
Expand Down

0 comments on commit b478931

Please sign in to comment.