diff --git a/develop/GMap.js b/develop/GMap.js index 3c78a02..021f36f 100644 --- a/develop/GMap.js +++ b/develop/GMap.js @@ -1,13 +1,15 @@ import React from 'react'; import compose from 'recompose/compose'; import defaultProps from 'recompose/defaultProps'; -import withState from 'recompose/withState'; +import withStateSelector from './utils/withStateSelector'; import withHandlers from 'recompose/withHandlers'; -// import withPropsOnChange from 'recompose/withPropsOnChange'; +import withState from 'recompose/withState'; +import withPropsOnChange from 'recompose/withPropsOnChange'; +import ptInBounds from './utils/ptInBounds'; import GoogleMapReact from '../src'; import SimpleMarker from './markers/SimpleMarker'; -import { susolvkaCoords, markersData } from './data/fakeData'; +import { susolvkaCoords, generateMarkers } from './data/fakeData'; export const gMap = ({ style, hoverDistance, options, @@ -53,8 +55,14 @@ export const gMapHOC = compose( flex: 1, }, }), + // withState so you could change markers if you want - withState('markers', 'setMarkers', markersData), + withStateSelector( + 'markers', + 'setMarkers', + ({ route: { markersCount = 20 } }) => markersCount, + (markersCount) => generateMarkers(markersCount) + ), withState('hoveredMarkerId', 'setHoveredMarkerId', -1), withState('mapParams', 'setMapParams', { center: susolvkaCoords, zoom: 10 }), // describe events @@ -69,6 +77,14 @@ export const gMapHOC = compose( setHoveredMarkerId(-1); }, }), + withPropsOnChange( + ['markers', 'mapParams'], + ({ markers, mapParams: { bounds } }) => ({ + markers: bounds + ? markers.filter(m => ptInBounds(bounds, m)) + : [], + }) + ) ); export default gMapHOC(gMap); diff --git a/develop/Layout.js b/develop/Layout.js index ef9f817..5875590 100644 --- a/develop/Layout.js +++ b/develop/Layout.js @@ -1,17 +1,18 @@ import React, { Component } from 'react'; import compose from 'recompose/compose'; +import { Link } from 'react-router'; import defaultProps from 'recompose/defaultProps'; import layoutStyles from './Layout.sass'; -import GMap from './GMap'; // for hmr to work I need the first class to extend Component export class Layout extends Component { // eslint-disable-line render() { - const { styles: { layout, header, main, footer, logo } } = this.props; + const { styles: { layout, header, main, footer, logo, links } } = this.props; return (
-
- Clustering example google-map-react (zoom, move to play with) +
+ Multi Markers + Hover optim
@@ -20,7 +21,7 @@ export class Layout extends Component { // eslint-disable-line
- + {this.props.children}