- Notifications
You must be signed in to change notification settings - Fork857
Google map library for react that allows rendering components as markers 🎉
License
google-map-react/google-map-react
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
google-map-react is a component written over a small set of theGoogle Maps API. It allows you to render any React component on the Google Map. It is fully isomorphic and can render on a server. Additionally, it can render map components in the browser even if the Google Maps API is not loaded. It uses an internal, tweakable hover algorithm - every object on the map can be hovered.
It allows you to create interfaces like thisexample(You can scroll the table, zoom/move the map, hover/click on markers, and click on table rows)
In the simple case you just need to addlat andlng props to any child ofGoogleMapReact component.
importReactfrom"react";importGoogleMapReactfrom'google-map-react';constAnyReactComponent=({ text})=><div>{text}</div>;exportdefaultfunctionSimpleMap(){constdefaultProps={center:{lat:10.99835602,lng:77.01502627},zoom:11};return(// Important! Always set the container height explicitly<divstyle={{height:'100vh',width:'100%'}}><GoogleMapReactbootstrapURLKeys={{key:""}}defaultCenter={defaultProps.center}defaultZoom={defaultProps.zoom}><AnyReactComponentlat={59.955413}lng={30.337844}text="My Marker"/></GoogleMapReact></div>);}
- Make sure the container element has width and height. The map will try to fill the parent container, but if the container has no size, the map will collapse to 0 width / height. This is not a requirement for google-map-react,it's a requirement for google-maps in general.
npm:
npm install --save google-map-reactyarn:
yarn add google-map-reactInstead of the default Google Maps markers, balloons and other map components, you can render your cool animated react components on the map.
It renders on the server.(Welcome search engines)(you can disable javascript in browser dev tools, and reload any example page to see how it works)
It renders components on the map before (and even without) the Google Maps API loaded.
There is no need to place a<script src= tag at top of page. The Google Maps API loads upon the first usage of theGoogleMapReact component.
You can access to Google Mapsmap andmaps objects by usingonGoogleApiLoaded, in this case you will need to setyesIWantToUseGoogleMapApiInternals totrue
...consthandleApiLoaded=(map,maps)=>{// use map and maps objects};...<GoogleMapReactbootstrapURLKeys={{key:/* YOUR KEY HERE */}}defaultCenter={this.props.center}defaultZoom={this.props.zoom}yesIWantToUseGoogleMapApiInternalsonGoogleApiLoaded={({ map, maps})=>handleApiLoaded(map,maps)}><AnyReactComponentlat={59.955413}lng={30.337844}text="My Marker"/></GoogleMapReact>
PST: Remember to setyesIWantToUseGoogleMapApiInternals to true.
Now every object on the map can be hovered (however, you can still use css hover selectors if you want). If you try zooming out hereexample, you will still be able to hover on almost every map marker.
Hover effects:simple hover (source);distance hover (source)
Example project:main (source);balderdash (same source as main)
Clustering example using Hooks (new:source,article)clustering-with-hooks
Clustering example (source)google-map-clustering-example
How to render thousands of markers (new:source)google-map-thousands-markers
Examples:ExamplesOld examples
jsbin examplejsbin example
webpackbin examples (new)docs with webpackbin examples (In progress)
local develop example (new)develop example
You can find the documentation here:
NEW DOCS (In progress)
Local development is broken into two parts (ideally using two tabs).
First, run rollup to watch yoursrc/ module and automatically recompile it intodist/ whenever you make changes.
npm start# runs rollup with watch flagThe second part will be running theexample/ create-react-app that's linked to the local version of your module.
# (in another tab)cd examplenpm start# runs create-react-app dev server
Now, anytime you make a change to your library insrc/ or to the example app'sexample/src,create-react-app will live-reload your local dev server so you can iterate on your component in real-time.
If you get the errorModule not found: Can't resolve 'google-react-map'... while trying to run the example app, you need to manually link your local development module, try the following steps:
- In the root folder:
npm link
- Go into
example/and (after installing other dependencies) execute:
npm link google-map-react
- Older browsers (http://caniuse.com/#feat=promises) will need a ES6 Promise polyfill in order to work.
We're actively looking for contributors, please send a message to the Owner or any of the Collaborators.
About
Google map library for react that allows rendering components as markers 🎉
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.