Skip to content

Yandex.MapKit implementation for react native

Notifications You must be signed in to change notification settings

Daha62/react-native-yamap

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Установка

yarn add react-native-yamap

Π›ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°

Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΏΠΈ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π°, Ρ‚ΠΎ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ»ΠΈΠ½ΠΊΠΈΠ½Π³ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для react-native@^0.60.0.

Для использования Yandex MapKit Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠ»ΠΈΠ½ΠΊΠΈΠ½Π³).

Π›ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ° react-native вСрсии мСньшС 60

react-native link react-native-yamap

ИспользованиС ΠΊΠ°Ρ€Ρ‚

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹

// js
import YaMap from 'react-native-yamap';

YaMap.init('API_KEY');

для ios

РСкомСндуСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ MapKit Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ didFinishLaunchingWithOptions Π² AppDelegate.m

#import <YandexMapKit/YMKMapKitFactory.h>

...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    [YMKMapKit setApiKey: @"API_KEY"];
    return YES;
}

ИзмСнСниС языка ΠΊΠ°Ρ€Ρ‚

// js
import YaMap from 'react-native-yamap';

const currentLocale = await YaMap.getLocale(); 
YaMap.setLocale('en_US'); // 'ru_RU'...
YaMap.resetLocale();

  • getLocale(): Promise<string> - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык ΠΊΠ°Ρ€Ρ‚
  • setLocale(locale: string): Promise<void> - ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ язык ΠΊΠ°Ρ€Ρ‚
  • resetLocale(): Promise<void> - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΠ°Ρ€Ρ‚ язык систСмы

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Promise, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся, ΠΏΡ€ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ sdk. Promise ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒΡΡ, Ссли sdk Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ЗамСчания:

  1. Для Π°Π½Π΄Ρ€ΠΎΠΈΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ языка ΠΊΠ°Ρ€Ρ‚ вступит Π² силу Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС пСрСзапуска прилоТСния. Π‘ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ setLocale Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ sdk.
  2. Для ios ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ измСнСния языка ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚Ρ‹. Π’Π°ΠΊΠΆΠ΅ нСльзя ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ссли язык ΡƒΠΆΠ΅ измСнялся (ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС пСрСзапуска прилоТСния). Π˜Π½Π°Ρ‡Π΅ измСнСния приняты Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС с ΠΏΠ΅Ρ€Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ. Π’ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈ этом Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС. НиТС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ коммСнтария ΠΈΠ· ΠΊΠΎΠ΄Π° Π² Mapkit SDK (Π€Π°ΠΉΠ» YRTI18nManagerFactory.h)
Sets the application's locale. Useful only if MapKit is not used by
 * the application. Also useless if someone else has already set
 * the locale (produses warning and does nothing). Can be set to none,
 * in this case system locale will be used.

ИспользованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

import React from 'react';
import YaMap from 'react-native-yamap';

const route = {
  start: { lat: 0, lon: 0},
  end: { lat: 10, lon: 10},
};

class Map extends React.Component {
  handleOnRouteFound(event) {
    console.log(event.nativeEvent.routes);
  }

  render() {
    return (
      <YaMap
        userLocationIcon={{ uri: 'https://www.clipartmax.com/png/middle/180-1801760_pin-png.png' }}
        style={{ flex: 1 }}
      />
    );
  }
}

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹

interface Point {
 lat: Number; 
 lon: Number;
}

export type MasstransitVehicles = 'bus' | 'trolleybus' | 'tramway' | 'minibus' | 'suburban' | 'underground' | 'ferry' | 'cable' | 'funicular';

export type Vehicles = MasstransitVehicles | 'walk' | 'car';


export interface DrivingInfo {
  time: string;
  timeWithTraffic: string;
  distance: number;
}

export interface MasstransitInfo {
  time: string;
  transferCount: number;
  walkingDistance: number;
}

export interface RouteInfo<T extends (DrivingInfo | MasstransitInfo)> {
  id: string;
  sections: {
    points: Point[];
    sectionInfo: T;
    routeInfo: T;
    routeIndex: number;
    stops: any[];
    type: string;
    transports?: any;
    sectionColor?: string;
  }
}


export interface RoutesFoundEvent<T extends (DrivingInfo | MasstransitInfo)> {
  nativeEvent: {
    status: 'success' | 'error';
    id: string;
    routes: RouteInfo<T>[];
  };
}

export interface CameraPosition {
  zoom: number;
  tilt: number;
  azimuth: number;
  point: Point;
}

ДоступныС props для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MapView

  • showUserPosition?: boolean - Ссли false, Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ true
  • nightMode: boolean - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΡ‡Π½ΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - false
  • userLocationIcon: ImageSource - ΠΈΠΊΠΎΠ½ΠΊΠ° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Доступны Ρ‚Π΅ ΠΆΠ΅ значСния Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Image ΠΈΠ· react native
  • onCameraPositionChange?: (event: NativeSyntheticEvent<CameraPosition>) => void - ΠΊΠΎΠ»Π±Π΅ΠΊ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹
  • onMapPress?: (event: NativeSyntheticEvent<Point>) => void - событиС наТития Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ. ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΆΠ°Π»ΠΈ
  • onMapLongPress?: (event: NativeSyntheticEvent<Point>) => void - событиС Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ наТития Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ. ΠŸΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΆΠ°Π»ΠΈ
  • children: Marker | Polygon | Polyline | Circle - см Ρ€Π°Π·Π΄Π΅Π» "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ - ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²"
  • userLocationAccuracyFillColor?: string - Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Π·ΠΎΠ½Ρ‹ точности опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • userLocationAccuracyStrokeColor?: string - Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π·ΠΎΠ½Ρ‹ точности опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • userLocationAccuracyStrokeWidth?: number - Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π·ΠΎΠ½Ρ‹ точности опрСдСлСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

  • fitAllMarkers - ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ (Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ)

  • setCenter(center: { lon: number, lat: number }, zoom: number = 10, azimuth: number = 0, tilt: number = 0, duration: number = 0, animation: Animation = Animation.SMOOTH) - устанавливаСт ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ zoom, ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠΌ ΠΏΠΎ Π°Π·ΠΈΠΌΡƒΡ‚Ρƒ ΠΈ Π½Π°ΠΊΠ»ΠΎΠ½ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹ (tilt). МоТно ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ: Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚ΠΈΠΏ. Если Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 0, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π· Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ Animation.SMOOTH ΠΈ Animation.LINEAR

  • setZoom(zoom: number, duration: number, animation: Animation) - ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ zoom ΠΊΠ°Ρ€Ρ‚Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ duration ΠΈ animation Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с setCenter

  • getCameraPosition(callback: (position: CameraPosition) => void) - Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ»Π±Π΅ΠΊ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ

  • findRoutes(points: Point[], vehicles: Vehicles[], callback: (event: RoutesFoundEvent) => void) - запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ points с использованиСм транспорта vehicles. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ callback с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΠΎ всСх ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ… (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²")

  • findMasstransitRoutes(points: Point[], callback: (event: RoutesFoundEvent<MasstransitInfo>) => void): void - запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π° любом общСствСнном транспортС

  • findPedestrianRoutes(points: Point[], callback: (event: RoutesFoundEvent<MasstransitInfo>) => void): void - запрос ΠΏΠ΅ΡˆΠ΅Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

  • findDrivingRoutes(points: Point[], callback: (event: RoutesFoundEvent<DrivingInfo>) => void): void - запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° для автомобиля

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠ°Ρ€Ρ‚ стилизуСтся, ΠΊΠ°ΠΊ ΠΈ View ΠΈΠ· react-native. Если ΠΊΠ°Ρ€Ρ‚Π° Π½Π΅ отобраТаСтся, послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π΅ΠΌ АПИ, вСроятно Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΠΈΡˆΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (height+width ΠΈΠ»ΠΈ flex)

  • ΠŸΡ€ΠΈ использовании ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· js (Ρ‡Π΅Ρ€Π΅Π· require('./img.png')) Π² Π΄Π΅Π±Π°Π³Π΅ ΠΈ Ρ€Π΅Π»ΠΈΠ·Π΅ Π½Π° Π°Π½Π΄Ρ€ΠΎΠΈΠ΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии рСкомСндуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ Π² Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠΉ сборкС. Π‘ΡƒΠ΄Π΅Ρ‚ исправлСно Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ…

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²

Marker

import { Marker } from 'react-native-yamap';

...
<YaMap>
    <Marker point={{lat: 50, lon: 50}}/>
</YaMap>

ДоступныС props:

interface MarkerProps {
  scale?: number; // ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°. НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ children Ρƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°
  point: Point; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ для отобраТСния ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°
  source?: ImageSource; // Π΄Π°Π½Π½Ρ‹Π΅ для изобраТСния ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°
  children?: React.ReactElement; // Ρ€Π΅Π½Π΄Π΅Ρ€ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Π½Π΅ рСкомСндуСтся) 
  onPress?: () => void;
  anchor: { x: number, y: number }; // Π―ΠΊΠΎΡ€ΡŒ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ значСния ΠΎΡ‚ 0 Π΄ΠΎ 1. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ { x: 0.5, y: 0.5 } - Ρ†Π΅Π½Ρ‚Ρ€ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ point
  zIndex?: number;
}

Circle

import { Circle } from 'react-native-yamap';

...
<YaMap>
    <Circle center={{lat: 50, lon: 50}} radius={300} />
</YaMap>

ДоступныС props:

interface CircleProps {
  center: Point; // Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΡ€ΡƒΠ³Π°
  radius: number; // радиус ΠΊΡ€ΡƒΠ³Π° Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ…
  fillColor?: string; // Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
  strokeColor?: string; // Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹
  strokeWidth?: number; // Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹
  zIndex?: number;
  onPress?: () => void;
}

Polyline

import { Polyline } from 'react-native-yamap';

...
<YaMap>
    <Polyline points={[
      {lat: 50, lon: 50},
      {lat: 50, lon: 20},
      {lat: 20, lon: 20},
    ]}/>
</YaMap>

ДоступныС props:

interface PolylineProps {
  strokeColor?: string; // Ρ†Π²Π΅Ρ‚ Π»ΠΈΠ½ΠΈΠΈ
  outlineColor?: string; // Ρ†Π²Π΅Ρ‚ ΠΎΠ±Π²ΠΎΠ΄ΠΊΠΈ
  strokeWidth?: number; // Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ
  outlineWidth?: number; // Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° ΠΎΠ±Π²ΠΎΡ‚ΠΊΠΈ (0 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)
  dashLength?: number; // Π΄Π»ΠΈΠ½Π° ΡˆΡ‚Ρ€ΠΈΡ…Π°
  dashOffset?: number; // отступ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡˆΡ‚Ρ€ΠΈΡ…Π° ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΠΈΠ»ΠΈΠ½ΠΈΠΈ
  gapLength?: number; // Π΄Π»ΠΈΠ½Π° Ρ€Π°Π·Ρ€Ρ‹Π²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΡˆΡ‚Ρ€ΠΈΡ…Π°ΠΌΠΈ (0 ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - сплошная линия)
  points: Point[]; // массив Ρ‚ΠΎΡ‡Π΅ΠΊ Π»ΠΈΠ½ΠΈΠΈ
  zIndex?: number;
  onPress?: () => void;
}

Polygon

import { Polygon } from 'react-native-yamap';

...
<YaMap>
    <Polygon points={[
      {lat: 50, lon: 50},
      {lat: 50, lon: 20},
      {lat: 20, lon: 20},
    ]}/>
</YaMap>

ДоступныС props:

interface PolygonProps {
  fillColor?: string; // Ρ†Π²Π΅Ρ‚ Π·Π°Π»ΠΈΠ²ΠΊΠΈ
  strokeColor?: string; // Ρ†Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹
  strokeWidth?: number; // Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹
  points: Point[]; // Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°
  innerRings: (Point[])[]; // массив ΠΏΠΎΠ»ΠΈΠ»ΠΈΠ½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ отвСрстия Π² ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π΅ 
  zIndex?: number;
  onPress?: () => void;
}

Запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ findRoutes ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° YaMap (Ρ‡Π΅Ρ€Π΅Π· ref).

findRoutes(points: Point[], vehicles: Vehicles[], callback: (event: RoutesFoundEvent) => void) - запрос ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ points с использованиСм транспорта vehicles. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ callback с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΠΎ всСх ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ….

Π’ настоящСС врСмя Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ ΠΈΠ· Yandex MapKit:

  • masstransit - для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π° общСствСнном транспортС
  • pedestrian - для ΠΏΠ΅ΡˆΠ΅Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²
  • driving - для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅

Π’ΠΈΠΏ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° зависит ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ массива vehicles:

  • Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ пустой массив (this.map.current.findRoutes(points, [], () => null);), Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использован PedestrianRouter
  • Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ массив с ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом 'car' (this.map.current.findRoutes(points, ['car'], () => null);), Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использован DrivingRouter
  • Π²ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ MasstransitRouter

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚Π΅Ρ€, Π²Ρ‹Π·Π²Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

findMasstransitRoutes(points: Point[], callback: (event: RoutesFoundEvent) => void): void;

findPedestrianRoutes(points: Point[], callback: (event: RoutesFoundEvent) => void): void;

findDrivingRoutes(points: Point[], callback: (event: RoutesFoundEvent) => void): void;

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π° информация ΠΎ ΠΌΠ°Ρ€ΡˆΡƒΡ‚Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

ИспользованиС Π°ΠΏΠΈ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π°

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

import { Geocoder } from 'react-native-yamap';

Geocoder.init('API_KEY');

API_KEY для Π°ΠΏΠΈ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π° ΠΈ для ΠΊΠ°Ρ€Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ ΠΎΠ±Π° класса, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим ΠΊΠ»ΡŽΡ‡Π΅ΠΌ.

ΠŸΡ€ΡΠΌΠΎΠ΅ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Geocoder.geocode(geocode: Point, kind?: ObjectKind, results?: number, skip?: number, lang?: Lang);

НазначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π° ОписаниС ΠΎΡ‚Π΅Ρ‚Π° Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²

Geocoder.geoToAddress(geo: Point);

Π’Π΅Ρ€Π½Π΅Ρ‚ null ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ адрСса (строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ индСкс ΠΈ массив ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² адрСса) ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π°.

interface Address {
  country_code: string;
  formatted: string;
  postal_code: string;
  Components: {kind: string, name: string}[];
}

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π³Π΅ΠΎΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Geocoder.reverseGeocode(geocode: string, kind?: ObjectKind, results?: number, skip?: number, lang?: Lang, rspn?: 0 | 1, ll?: Point, spn?: [number, number], bbox?: [Point, Point]);

НазначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π° ОписаниС ΠΎΡ‚Π΅Ρ‚Π° Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²

Geocoder.addressToGeo(address: string);

Π’Π΅Ρ€Π½Π΅Ρ‚ null ΠΈΠ»ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ {lat: number, lon: number} ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Π°.

About

Yandex.MapKit implementation for react native

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 45.7%
  • Objective-C 43.1%
  • TypeScript 10.7%
  • Ruby 0.5%