谷歌地图反应标记未显示

时间:2019-01-21 20:40:10

标签: reactjs

大家好,我试图在react.js中实现google maps,但是地图显示的很好,但是当我尝试显示标记时,什么也没有显示。如果我删除了经度和纬度值,则标记将显示在地图顶部。但是,如果我向其中添加经度和纬度值,则它将停止显示。有人可以帮忙吗?

import React, { Component } from 'react';
import GoogleMapReact from 'google-map-react';
import marker from './marker.png';
import { geolocated } from 'react-geolocated';
const AnyReactComponent = ({ text }) => (
  <div>
    <img src={marker} style={{ height: '50px', width: '50px' }} />
  </div>
);






export default class Map extends Component {
  static defaultProps = {
    zoom: 11,
  };

  Componentwillmount() {
    console.log(this.props.center.latitude);
  }



  render() {
    return (
      <div className="google-map" style={{ width: '100%', height: '2000px', backgroundColor: 'red' }}>
        <GoogleMapReact
          options={{
            styles:ExampleMapStyles
        }}
         center={this.props.center} defaultZoom={this.props.zoom}>
        <AnyReactComponent
            lat={59.955413}
            lng={30.337844}
            text={'Kreyser Avrora'}
          />
        </GoogleMapReact>
      </div>
    );
  }
}

2 个答案:

答案 0 :(得分:0)

我认为您需要回答的主要问题是:您的中心道具是什么? 我在沙箱中使用了您的代码,并做了一些小的改动:我使用了相同的纬度/经度,应在其中绘制您的标记,以便一眼就能看到它是否真正显示出来。它是: https://codesandbox.io/s/00p1ry2v0v

export default class Map extends Component {
  static defaultProps = {
    zoom: 11,
    center: {
      lat: 49.955413,
      lng: 30.337844
    }
  };

  render() {
    const mapStyles = {
      width: "100%",
      height: "100%"
    };
    return (
      <div
        className="google-map"
        style={{ width: "100%", height: "2000px", backgroundColor: "red" }}
      >
        <GoogleMapReact
          style={mapStyles}
          center={this.props.center}
          defaultZoom={this.props.zoom}
        >
          <AnyReactComponent
            lat={49.955413}
            lng={30.337844}
            text={"Kreyser Avrora"}
          />
        </GoogleMapReact>
      </div>
    );
  }
}

因此,请确保以正确的初始中心位置开始地图。 :)

答案 1 :(得分:0)

文档显示您可以使用<AnyReactCompenent/>,如果您想拥有自己的标记或文本,可以使用<GoogleMapReact></GoogleMapReact>。但是,如果您希望使用默认标记,则必须将其作为属性传递到onGoogleApiLoaded组件中。文档提到“您可以使用yesIWantToUseGoogleMapApiInternals访问Google Maps地图和地图对象,在这种情况下,您需要将renderMarkers = (map, maps) => {}设置为true”。这只是意味着添加属性的名称,而无需像我一样传递值。根据自述文件中的描述可能并不清楚,但是maps参数实际上是maps API对象(而map当然是当前的Google Map实例)。因此,您应该使用import React, { Fragment } from 'react'; import GoogleMapReact from 'google-map-react'; const GoogleMaps = ({ latitude, longitude }) => { const renderMarkers = (map, maps) => { let marker = new maps.Marker({ position: { lat: latitude, lng: longitude }, map, title: 'Hello World!' }); return marker; }; return ( <Fragment> <div style={{ height: '50vh', width: '100%' }}> <GoogleMapReact bootstrapURLKeys={{ key: 'YOUR KEY' }} defaultCenter={{ lat: latitude, lng: longitude }} defaultZoom={16} yesIWantToUseGoogleMapApiInternals onGoogleApiLoaded={({ map, maps }) => renderMarkers(map, maps)} > </GoogleMapReact> </div> </Fragment> ); }; export default GoogleMaps; 函数将两者都传递给方法。

您可以尝试以下方法:

undefined