javascript - 如何添加标记 onClick 并在 google-maps-react 中显示我的地理位置?

标签 javascript reactjs google-maps react-google-maps

我在 google maps 文档上找到了很多有用的信息,但是在 html 中简单地使用了 js,以防 react 老实说我不明白。

源代码:

import React, { Component } from 'react';
import {Map, InfoWindow, Marker, GoogleApiWrapper} from 'google-maps-react';

export class MainMap extends Component {
    render() {
        return (
            <div>
                <h1 className="text-center">My Maps</h1>
            <Map google={this.props.google}
                 style={{width: '80%', margin: 'auto'}}
                 className={'map'}
                 zoom={14}>
                <Marker
                    title={'The marker`s title will appear as a tooltip.'}
                    name={'SOMA'}
                    position={{lat: 37.778519, lng: -122.405640}} />
                <Marker
                    name={'Dolores park'}
                    position={{lat: 37.759703, lng: -122.428093}} />
                <Marker />
                <Marker
                    name={'Your position'}
                    position={{lat: 46.475640, lng: 30.759497}}/>
            </Map>
            </div>
        );
    }
}



export default GoogleApiWrapper({
    apiKey: (MY-API-KEY)
})(MainMap);

我想通过点击 map 来添加标记,但不知道如何... 请帮忙!

最佳答案

map 有一个 onClick 属性,你可以给它一个函数来处理 map 上的点击。此函数的第三个参数包括点击的坐标。

您可以使用这些坐标为您在 render 方法中使用的状态添加标记。

示例

class MainMap extends Component {
  constructor(props) {
    super(props);
    this.state = {
      markers: [
        {
          title: "The marker`s title will appear as a tooltip.",
          name: "SOMA",
          position: { lat: 37.778519, lng: -122.40564 }
        }
      ]
    };
    this.onClick = this.onClick.bind(this);
  }

  onClick(t, map, coord) {
    const { latLng } = coord;
    const lat = latLng.lat();
    const lng = latLng.lng();

    this.setState(previousState => {
      return {
        markers: [
          ...previousState.markers,
          {
            title: "",
            name: "",
            position: { lat, lng }
          }
        ]
      };
    });
  }

  render() {
    return (
      <div>
        <h1 className="text-center">My Maps</h1>
        <Map
          google={this.props.google}
          style={{ width: "80%", margin: "auto" }}
          className={"map"}
          zoom={14}
          onClick={this.onClick}
        >
          {this.state.markers.map((marker, index) => (
            <Marker
              key={index}
              title={marker.title}
              name={marker.name}
              position={marker.position}
            />
          ))}
        </Map>
      </div>
    );
  }
}

const App = GoogleApiWrapper({
  apiKey: (MY-API-KEY)
})(MainMap);

关于javascript - 如何添加标记 onClick 并在 google-maps-react 中显示我的地理位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51421714/

相关文章:

javascript - Ruby Rails 使用 JavaScript 添加字段到表单

javascript - AJAX 和 Javascript 为每个人显示相同的内容?

Javascript 将数组写入字符串以供函数使用

html - 如何使用 ant-design 在布局中拉伸(stretch)父元素宽度

javascript - 如何在 jQuery 中强制刷新或重新加载页面?

javascript - 使用 JavaScript 将两个数组合并为一个对象的数组

javascript - 当 mapStateToProps 中收到另一个 prop 时更新 prop

node.js - Create-react-app 137 个漏洞(123 个中度、13 个高度、1 个严重)

javascript - 如何使用 Sequelize 显示来自 Google map 地址的内容?

javascript - 如何将submit()事件延迟到Geocoder完成之后?