Getting Started
@pbe/react-yandex-maps
is a wrapper around Yandex.Maps API that allows you to
render Yandex Maps in your React application with minimum amount of hassle 🎉
Installation
Use npm/yarn to install the library from npm registry:
With npm:
npm install --save @pbe/react-yandex-maps
With yarn:
yarn add @pbe/react-yandex-maps
Adding Maps to Your Application
Adding maps to your application can be splitted in two steps.
First, we will add provider component, that will handle loading the Yandex.Maps API and providing it to any interested component on the page. Usually you don't want to have several providers on one page. A good place to put your provider could the at the top of your application:
import { YMaps } from '@pbe/react-yandex-maps';
const App = () => (
<YMaps>
<div>My awesome application with maps!</div>
</YMaps>
);
Then add the Map component with desired state somewhere on the page:
import { YMaps, Map } from '@pbe/react-yandex-maps';
const App = () => (
<YMaps>
<div>
My awesome application with maps!
<Map defaultState={{ center: [55.75, 37.57], zoom: 9 }} />
</div>
</YMaps>
);
That's it! Now, as soon as Yandex.Maps API is loaded by YMaps
provider
component, Map
component will render ymaps.Map
object on the page.
Before you start playing around with the library I higly recommend taking a quick look at the "What is supported?" section and a more thorough look at "Basic Principles" section
What Is Supported?
This library is a thin wrapper over Yandex.Maps API, a lot of Yandex.Maps API objects and features are supported with React components but not all of them and not all of their features.
Here is a list of supported features and objects:
Supported Features
- Modifying Yandex.Maps API request via
YMaps
provider component - Getting access to Yandex.Maps API in your components via
withYMaps
HOC - Granular load of the required API modules with Yandex.Maps modules API
- Controlled and uncontrolled components for every supported object
- Enterprise API via
YMaps
query
prop
Controlled props that are mentioned above are not 100% controlled as there is no way to stop Yandex. Map objects from updating completely with the library API. When using controlled props, you should keep in mind that your state/properties/options and Yandex.Maps object state/properties/options could go out of sync.
Supported Yandex. Map Objects
Map, Panorama
Supported GeoObjects
GeoObject
, Placemark
, Polyline
, Rectangle
, Polygon
, Circle
,
Clusterer
, ObjectManager
Supported Controls
Button
, FullscreenControl
, GeolocationControl
, ListBox
, ListBoxItem
,
RouteButton
, RouteEditor
, RoutePanel
, RulerControl
, SearchControl
,
TrafficControl
, TypeSelector
, ZoomControl
What Is Not Supported?
Rendering React DOM nodes to the Yandex.Maps template factories is not supported (i.e., you can't render balloon content with React with this library out of the box), see FAQ for more info.
Core Principles
There are a few core principles that are forming the base of this library. It will be very helpful to keep those in mind, when you are using it.