google-map-react vs react-google-maps vs react-geosuggest
React Mapping Libraries Comparison
1 Year
google-map-reactreact-google-mapsreact-geosuggestSimilar Packages:
What's React Mapping Libraries?

React mapping libraries provide developers with tools to integrate maps into their applications, enhancing user experience through geolocation features. These libraries simplify the process of embedding maps, handling markers, and managing user interactions with map components. They leverage Google Maps API or similar services to deliver rich geographical data and functionalities, making it easier to create location-based applications. Each library has its unique strengths, catering to different project requirements and developer preferences.

Package Weekly Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
google-map-react265,0486,427504 kB1632 years agoMIT
react-google-maps148,7024,629-2727 years agoMIT
react-geosuggest13,1351,044-184 years agoMIT
Feature Comparison: google-map-react vs react-google-maps vs react-geosuggest

Integration with Google Maps API

  • google-map-react:

    google-map-react offers a simple and efficient way to integrate Google Maps into your React application. It provides a set of components that directly correspond to Google Maps features, allowing developers to easily add maps, markers, and other elements without deep diving into the Google Maps API documentation.

  • react-google-maps:

    react-google-maps provides a higher-level abstraction over the Google Maps API, allowing developers to create complex map interfaces with ease. It offers a rich set of components and hooks that facilitate advanced functionalities such as custom overlays, markers, and event handling.

  • react-geosuggest:

    react-geosuggest integrates with the Google Places API to provide location suggestions as users type. This library focuses on enhancing user experience during address input, making it easier for users to find and select locations without needing to interact directly with a map.

Customization and Extensibility

  • google-map-react:

    google-map-react allows for significant customization of map components, enabling developers to create unique markers and overlays. Its component-based architecture makes it easy to extend functionality and integrate with other libraries or frameworks as needed.

  • react-google-maps:

    react-google-maps excels in customization, providing detailed control over map elements. Developers can create custom markers, info windows, and overlays, making it suitable for applications that require a tailored mapping experience.

  • react-geosuggest:

    react-geosuggest is less focused on map customization and more on enhancing the location search experience. While it offers some customization options for the suggestion dropdown, it is primarily designed for autocomplete functionality rather than extensive map features.

Learning Curve

  • google-map-react:

    google-map-react has a relatively gentle learning curve, especially for developers familiar with React. Its straightforward API and component structure make it easy to get started with basic map functionalities without extensive prior knowledge of mapping libraries.

  • react-google-maps:

    react-google-maps has a steeper learning curve due to its extensive features and reliance on the Google Maps API. While it offers powerful capabilities, developers may need to invest time in understanding both the library and the underlying Google Maps functionalities.

  • react-geosuggest:

    react-geosuggest is simple to implement and requires minimal setup, making it beginner-friendly. Developers can quickly add location suggestions to their forms with little configuration, making it an excellent choice for those new to React or mapping libraries.

Performance

  • google-map-react:

    google-map-react is optimized for performance, ensuring that map rendering is efficient even with numerous markers. It uses React's virtual DOM to minimize re-renders, making it suitable for applications with dynamic data and frequent updates.

  • react-google-maps:

    react-google-maps can handle complex map interactions and large datasets, but performance may vary based on the implementation. Developers need to be mindful of optimizing their components and managing state to prevent unnecessary re-renders.

  • react-geosuggest:

    react-geosuggest is lightweight and performs well in terms of speed, as it primarily focuses on the autocomplete feature. However, it does not handle map rendering, so performance is largely dependent on the underlying mapping library used alongside it.

Use Cases

  • google-map-react:

    google-map-react is ideal for applications that require basic mapping functionalities, such as displaying locations, routes, and markers. It is well-suited for simple projects or those that need quick map integration without heavy customization.

  • react-google-maps:

    react-google-maps is perfect for applications that require advanced mapping features, such as real estate platforms, travel apps, or any service that needs detailed geographical data and user interactions.

  • react-geosuggest:

    react-geosuggest is best used in forms where location input is necessary, such as booking systems, delivery services, or any application that benefits from user-friendly address searching.

How to Choose: google-map-react vs react-google-maps vs react-geosuggest
  • google-map-react:

    Choose google-map-react if you need a lightweight solution that allows for easy integration of Google Maps into your React application, with a focus on performance and flexibility. It is ideal for projects that require a straightforward mapping solution without extensive customization.

  • react-google-maps:

    Opt for react-google-maps if you need a comprehensive solution with extensive customization options for Google Maps. This library is suitable for applications that require advanced features like overlays, custom markers, and complex event handling, making it ideal for more intricate mapping needs.

  • react-geosuggest:

    Select react-geosuggest if your application requires an autocomplete search feature for locations. This library is particularly useful for forms where users need to input addresses or locations, as it provides a user-friendly interface for searching and selecting places.

README for google-map-react

Google Map React · npm version Build Status PRs Welcome

google-map-react is a component written over a small set of the Google 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 this example (You can scroll the table, zoom/move the map, hover/click on markers, and click on table rows)

Getting started

In the simple case you just need to add lat and lng props to any child of GoogleMapReact component.

See it in action at jsbin

import React from "react";
import GoogleMapReact from 'google-map-react';

const AnyReactComponent = ({ text }) => <div>{text}</div>;

export default function SimpleMap(){
  const defaultProps = {
    center: {
      lat: 10.99835602,
      lng: 77.01502627
    },
    zoom: 11
  };

  return (
    // Important! Always set the container height explicitly
    <div style={{ height: '100vh', width: '100%' }}>
      <GoogleMapReact
        bootstrapURLKeys={{ key: "" }}
        defaultCenter={defaultProps.center}
        defaultZoom={defaultProps.zoom}
      >
        <AnyReactComponent
          lat={59.955413}
          lng={30.337844}
          text="My Marker"
        />
      </GoogleMapReact>
    </div>
  );
}

My map doesn't appear!

  • 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, its a requirement for google-maps in general.

Installation

npm:

npm install --save google-map-react

yarn:

yarn add google-map-react

Features

Works with your Components

Instead of the default Google Maps markers, balloons and other map components, you can render your cool animated react components on the map.

Isomorphic Rendering

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)

Component Positions Calculated Independently of Google Maps API

It renders components on the map before (and even without) the Google Maps API loaded.

Google Maps API Loads on Demand

There is no need to place a <script src= tag at top of page. The Google Maps API loads upon the first usage of the GoogleMapReact component.

Use Google Maps API

You can access to Google Maps map and maps objects by using onGoogleApiLoaded, in this case you will need to set yesIWantToUseGoogleMapApiInternals to true

...

const handleApiLoaded = (map, maps) => {
  // use map and maps objects
};

...

<GoogleMapReact
  bootstrapURLKeys={{ key: /* YOUR KEY HERE */ }}
  defaultCenter={this.props.center}
  defaultZoom={this.props.zoom}
  yesIWantToUseGoogleMapApiInternals
  onGoogleApiLoaded={({ map, maps }) => handleApiLoaded(map, maps)}
>
  <AnyReactComponent
    lat={59.955413}
    lng={30.337844}
    text="My Marker"
  />
</GoogleMapReact>

PST: Remember to set yesIWantToUseGoogleMapApiInternals to true.

Example here

Internal Hover Algorithm

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 here example, you will still be able to hover on almost every map marker.

Examples

Documentation

You can find the documentation here:

Contribute

Local development is broken into two parts (ideally using two tabs).

First, run rollup to watch your src/ module and automatically recompile it into dist/ whenever you make changes.

npm start # runs rollup with watch flag

The second part will be running the example/ create-react-app that's linked to the local version of your module.

# (in another tab)
cd example
npm start # runs create-react-app dev server

Now, anytime you make a change to your library in src/ or to the example app's example/src, create-react-app will live-reload your local dev server so you can iterate on your component in real-time.

Manual link-install

If you get the error Module 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:

  1. In the root folder:
npm link
  1. Go into example/ and (after installing other dependencies) execute:
npm link google-map-react

License

MIT

Known Issues

  • Older browsers (http://caniuse.com/#feat=promises) will need a ES6 Promise polyfill in order to work.

!!! We are looking for contributors

We're actively looking for contributors, please send a message to the Owner or any of the Collaborators.