javascript - react-google-maps - Uncaught ReferenceError: google is not defined - Stack Overflow

I'm new in ReactJS, currently I'm using react-google-maps for a project, I'm showing som

I'm new in ReactJS, currently I'm using react-google-maps for a project, I'm showing some places using FourSquare API, there is a Direction button which is supposed to show the direction from users' current location to the destination.

Here's Meeting.js

/* eslint-disable no-undef */
/* global google */
import React, { Component } from 'react';
import Map from '../../Component/Map';
import MapAPI from '../../api/GoogleMap';

class Meeting extends Component {
// constructor and other stuff...

getDirections = () => {
const DirectionsService = new google.maps.DirectionsService();

DirectionsService.route(
  {
    destination: new google.maps.LatLng(24.8861479, 67.0595196),
    origin: new google.maps.LatLng(24.8812296, 67.0727269),
    travelMode: google.maps.TravelMode.DRIVING,
  },
  (result, status) => {
    if (status === google.maps.DirectionsStatus.OK) {
      this.setState({
        directions: result,
        mapLoaded: true,
        mapVisible: true,
      });
    } else {
      alert("Sorry! Can't calculate directions!");
    }
  },
);
};

render() {
const { coords, directions, mapVisible } = this.state;

return (
  <div className="section">
    {mapVisible && (
      <Map
        coords={coords}
        dragged={this.dragged}
        isMarkerShown
        directions={directions}
        googleMapURL={MapAPI}
        loadingElement={<div style={{ height: `100%` }} />}
        containerElement={<div style={{ height: `350px` }} />}
        mapElement={<div style={{ height: `100%` }} />}
      />
    )}
  </div>
);
}
}

export default Meeting;

Here is Map.js

import React from 'react';
import {
  withScriptjs,
  withGoogleMap,
  GoogleMap,
  Marker,
  DirectionsRenderer,
} from 'react-google-maps';

const Map = withScriptjs(
  withGoogleMap(props => (
    <GoogleMap
      defaultZoom={14}
      defaultCenter={{
        lat: props.coords.latitude,
        lng: props.coords.longitude,
      }}
      center={{ lat: props.coords.latitude, lng: props.coords.longitude }}
    >
      {props.isMarkerShown && (
        <Marker
          draggable={props.draggable || false}
          onDragEnd={e => props.dragged(e)}
          position={{ lat: props.coords.latitude, lng: props.coords.longitude }}
        />
      )}

      {props.directions && <DirectionsRenderer directions={props.directions} />}
    </GoogleMap>
  )),
);

export default Map;

The getDirections function is called on a button, it's neither working on ponentDidMount neither on button click, in both cases I'm getting same error.

I think it's because of the async loading of Google from but couldn't find a way to fix this, I saw same question's being asked but not satisfactory answer is there. Any help would be appreciated.

I'm new in ReactJS, currently I'm using react-google-maps for a project, I'm showing some places using FourSquare API, there is a Direction button which is supposed to show the direction from users' current location to the destination.

Here's Meeting.js

/* eslint-disable no-undef */
/* global google */
import React, { Component } from 'react';
import Map from '../../Component/Map';
import MapAPI from '../../api/GoogleMap';

class Meeting extends Component {
// constructor and other stuff...

getDirections = () => {
const DirectionsService = new google.maps.DirectionsService();

DirectionsService.route(
  {
    destination: new google.maps.LatLng(24.8861479, 67.0595196),
    origin: new google.maps.LatLng(24.8812296, 67.0727269),
    travelMode: google.maps.TravelMode.DRIVING,
  },
  (result, status) => {
    if (status === google.maps.DirectionsStatus.OK) {
      this.setState({
        directions: result,
        mapLoaded: true,
        mapVisible: true,
      });
    } else {
      alert("Sorry! Can't calculate directions!");
    }
  },
);
};

render() {
const { coords, directions, mapVisible } = this.state;

return (
  <div className="section">
    {mapVisible && (
      <Map
        coords={coords}
        dragged={this.dragged}
        isMarkerShown
        directions={directions}
        googleMapURL={MapAPI}
        loadingElement={<div style={{ height: `100%` }} />}
        containerElement={<div style={{ height: `350px` }} />}
        mapElement={<div style={{ height: `100%` }} />}
      />
    )}
  </div>
);
}
}

export default Meeting;

Here is Map.js

import React from 'react';
import {
  withScriptjs,
  withGoogleMap,
  GoogleMap,
  Marker,
  DirectionsRenderer,
} from 'react-google-maps';

const Map = withScriptjs(
  withGoogleMap(props => (
    <GoogleMap
      defaultZoom={14}
      defaultCenter={{
        lat: props.coords.latitude,
        lng: props.coords.longitude,
      }}
      center={{ lat: props.coords.latitude, lng: props.coords.longitude }}
    >
      {props.isMarkerShown && (
        <Marker
          draggable={props.draggable || false}
          onDragEnd={e => props.dragged(e)}
          position={{ lat: props.coords.latitude, lng: props.coords.longitude }}
        />
      )}

      {props.directions && <DirectionsRenderer directions={props.directions} />}
    </GoogleMap>
  )),
);

export default Map;

The getDirections function is called on a button, it's neither working on ponentDidMount neither on button click, in both cases I'm getting same error.

I think it's because of the async loading of Google from but couldn't find a way to fix this, I saw same question's being asked but not satisfactory answer is there. Any help would be appreciated.

Share Improve this question asked Nov 6, 2018 at 14:05 Adam JefferyAdam Jeffery 1151 gold badge1 silver badge9 bronze badges 2
  • I don't think you can access new google.maps... outside of the ponent where you import 'react-google-maps'. – c-chavez Commented Nov 6, 2018 at 16:21
  • stackoverflow./a/67870982/7473966 – Ronish Commented Jun 7, 2021 at 11:40
Add a ment  | 

1 Answer 1

Reset to default 1

This is because you import react-google-maps in your Map.js and you are calling google in your Meeting.js, google is available in your Map.js - try using it in there and you will be ready to go!

https://codesandbox.io/embed/nkykvozl34

UPDATE:

The configuration of the package react-google-maps has been updated: https://tomchentw.github.io/react-google-maps/#usage--configuration

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745442689a4627901.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信