首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-leaflet获取当前最新的onClick

react-leaflet获取当前最新的onClick
EN

Stack Overflow用户
提问于 2019-02-03 21:18:27
回答 2查看 13.6K关注 0票数 9

如果有人能帮我的话我会很高兴的。我已经在我的react项目上安装了react-leaflet,并且地图组件加载成功,我需要获取最新的latlng,并在单击地图时在弹出窗口中显示它,但我不知道如何:(

请..。请..。帮帮我..。

这是我的代码

代码语言:javascript
复制
import React from 'react'
import { Map as LeafletMap, TileLayer, Marker, Popup } from 'react-leaflet';

class Mapp extends React.Component {
    componentDidMount() {

    }

    render() {
        return (
            <LeafletMap
                center={[35.755229,51.304470]}
                zoom={16}
                maxZoom={20}
                attributionControl={true}
                zoomControl={true}
                doubleClickZoom={true}
                scrollWheelZoom={true}
                dragging={true}
                animate={true}
                easeLinearity={0.35}
            >
                <TileLayer
                    url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
                />
                <Marker position={[35.755229,51.304470]}
                draggable={true}
                >
                    <Popup >
                        Popup for any custom information.
                    </Popup>

                </Marker>
            </LeafletMap>
        );
    }
}

export default Mapp;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-04 04:26:11

以下是点击地图后如何在弹出窗口中显示maker位置的示例:

代码语言:javascript
复制
class MapExample extends Component {
  constructor(props) {
    super(props);
    this.state = {
      currentPos: null
    };
    this.handleClick = this.handleClick.bind(this);
  }


  handleClick(e){
    this.setState({ currentPos: e.latlng });
  }

  render() {
    return (
      <div>
        <Map center={this.props.center} zoom={this.props.zoom} onClick={this.handleClick}>
          <TileLayer
              url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
          />
          { this.state.currentPos && <Marker position={this.state.currentPos} draggable={true}>
            <Popup position={this.state.currentPos}>
              Current location: <pre>{JSON.stringify(this.state.currentPos, null, 2)}</pre>
            </Popup>
          </Marker>}
        </Map>
      </div>
    )
  }
}

解释:

  • currentPos状态用于保持Map.onClick事件处理程序返回鼠标事件位置

的标记position

  • event.latLng属性

供您参考的Here is a demo

票数 11
EN

Stack Overflow用户

发布于 2019-02-03 23:02:28

您试图实现的目标是什么?

这将是开始:

使用LeafletMap组件中的click (请参阅https://leafletjs.com/reference-1.4.0.html#map-click)事件并调用您的函数,如下所示:

代码语言:javascript
复制
<LeafletMap
  center={[35.755229,51.304470]}
  zoom={16}
  maxZoom={20}
  attributionControl={true}
  zoomControl={true}
  doubleClickZoom={true}
  scrollWheelZoom={true}
  dragging={true}
  animate={true}
  easeLinearity={0.35}
  onclick={this.handleClick}>
>
...
</LeafletMap>

在您的handleClick函数中,您可以获得lat和lng的信息,如下所示:

代码语言:javascript
复制
handleClick = (e) => {
  const { lat, lng } = e.latlng;
  console.log(lat, lng);
}

从这里开始,您可以使用您正在查找的信息创建您的标记/弹出窗口。

附加提示:请确保您的代码正确地包含在您的帖子中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54503275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档