React geo location component based on Google Maps
The component uses Google Maps API to fetch the locations. It uses Awesomplete as a hard dependency for the dropdown.
Check out the demo here.
Installation
npm install react-place
Dependencies
- Of course react and react-dom. You need to have these modules installed.
- Awesomplete - installed automatically while running
npm install react-place
. It comes with the component so you don't need to have it loaded on the page. - Google Maps API - you have to add
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=places"></script>
to your page to have the component working.
Usage (ES6)
import React from 'react'; import ReactDOM from 'react-dom'; import Location from 'react-place'; var location; var container = document.querySelector('...'); var onLocationSet = (data) => { // data.description // data.coords.lat // data.coords.lng }; location = ReactDOM.render( <Location country='US' noMatching='Sorry, I can not find {{value}}.' onLocationSet={ onLocationSet } inputProps={{ style: {color: '#0099FF'}, className:'location', placeholder: 'Where are your?' }} />, container );
Usage ES5 (with bundling)
var React = require('react'); var ReactDOM = require('react-dom'); var Location = require('react-place'); var createLocation = React.createFactory(Location); function onLocationSet (data) { // data.description // data.coords.lat // data.coords.lng } var container = document.querySelector('#container'); var LocationComp = createLocation({ country: country.value, noMatching: 'Sorry, I can not find {{value}}.', onLocationSet: onLocationSet, inputProps={{ style: {color: '#0099FF'}, className:'location', placeholder: 'Where are your?' }} }); var location = ReactDOM.render(LocationComp, container);
If you need to update the country dynamically use the following API:
location.updateCountry('FR');
Usage ES5 (no bundling)
Download react-place.min.js file and add it to your page.
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=places"></script> <script src="https://fb.me/react-0.14.3.js"></script> <script src="https://fb.me/react-dom-0.14.3.js"></script> <script src="react-place.min.js"></script> <script> var createLocation = React.createFactory(ReactPlace); function onLocationSet(data) { // data.description // data.coords.lat // data.coords.lng } window.onload = function () { var container = document.querySelector('...'); var LocationComp = createLocation({ country: country.value, noMatching: 'Sorry, I can not find {{value}}.', onLocationSet: onLocationSet, inputProps={{ style: {color: '#0099FF'}, className:'location', placeholder: 'Where are your?' }} }); var l = ReactDOM.render(LocationComp, container); }; </script>
Testing
npm run test