在 google-map-react 上动态添加标记

IT技术 javascript reactjs google-maps
2021-04-10 20:24:17

我不想做的是在地图上显示从某些移动设备选择的位置。有关位置的数据在那里..

我在这里需要的是根据从服务器收到的数据在地图上添加标记。

假设我已将位置数据({Lat,Lang})设置为状态标记 那么我如何将其添加到地图中。

我的地图代码如下!

import React, { Component } from 'react';
import GoogleMapReact from 'google-map-react';

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

class MyClass extends Component {
  constructor(props){
    super(props);

  }

  render() {
    return (
      <GoogleMapReact
        defaultCenter={this.props.center}
        defaultZoom={this.props.zoom}
        style={{height: '300px'}}
      >
        <AnyReactComponent
          lat={59.955413}
          lng={30.337844}
          text={'Google Map'}
        />
      </GoogleMapReact>
    );
  }
}
MyClass.defaultProps = {
  center: {lat: 59.95, lng: 30.33},
  zoom: 11
};

export default MyClass;

这段代码来自答案Implementing google maps with react

使用的 npm 包:- google-map-react

2个回答

你可以试试:

import React, { Component } from 'react';
import GoogleMapReact from 'google-map-react';

const AnyReactComponent = ({  img_src }) => <div><img src={img_src} className="YOUR-CLASS-NAME" style={{}} /></div>;

class MyClass extends Component {
  constructor(props){
    super(props);
    this.state = {
        markers: [],
    }
  }

  componentDidMount(){
    // or you can set markers list somewhere else
    // please also set your correct lat & lng
    // you may only use 1 image for all markers, if then, remove the img_src attribute ^^
    this.setState({
      markers: [{lat: xxxx, lng: xxxx, img_src: 'YOUR-IMG-SRC'},{lat: xxxx, lng: xxxx, img_src: 'YOUR-IMG-SRC' },{lat: xxxx, lng: xxxx,  img_src: 'YOUR-IMG-SRC'}],
    });
  }

  render() {
    return (
      <GoogleMapReact
        defaultCenter={this.props.center}
        defaultZoom={this.props.zoom}
        style={{height: '300px'}}
      >
            {this.state.markers.map((marker, i) =>{
              return(
                <AnyReactComponent
                  lat={marker.lat}
                  lng={marker.lng}
                  img_src={marker.img_src}
                />

              )
            })}      
      </GoogleMapReact>
    );
  }
}
MyClass.defaultProps = {
  center: {lat: 59.95, lng: 30.33},
  zoom: 11
};

如果这里有错误,请也在这里显示,然后我们可以稍后修复

============

标记上点击事件的附加示例

 markerClicked(marker) {
   console.log("The marker that was clicked is", marker);
   // you may do many things with the "marker" object, please see more on tutorial of the library's author:
  // https://github.com/istarkov/google-map-react/blob/master/API.md#onchildclick-func 
  // Look at their examples and you may have some ideas, you can also have the hover effect on markers, but it's a bit more complicated I think 
 }

 render() {
    return (
      <GoogleMapReact
        defaultCenter={this.props.center}
        defaultZoom={this.props.zoom}
        style={{height: '300px'}}
      >
            {this.state.markers.map((marker, i) =>{
              return(
                <AnyReactComponent
                  lat={marker.lat}
                  lng={marker.lng}
                  img_src={marker.img_src}
                  onChildClick={this.markerClicked.bind(this, marker)}
                />

              )
            })}      

      </GoogleMapReact>
    );
  }

再次,如果有任何错误,请在此处发布 ^^ !

没有错误它有效!但是,图像没有出现!只是一个正方形。在 Image 属性类中,我应该输入 png/jpg/ico 对吗?
2021-05-22 20:24:17
不客气^^!其实,上面的回答只是一个非常简单的 GoogleMap for react 例子。我们使用的库是用于在地图上渲染 react-component 的,这对于服务端渲染很有用,因此,标记的点击事件会稍微复杂一些。我现在将向您展示一些关于如何实现点击事件的演示,但如果您真的想拥有更“自然”的谷歌地图(标记+事件、折线、方向等)的完整功能,您可以考虑使用另一个强大的库:github.com/tomchentw/react-google-maps
2021-05-22 20:24:17
如果我不想获得标记的 onTap 事件!我应该如何进行?非常感谢好友!你救了我几天的工作!
2021-05-31 20:24:17
是的!是源的问题!!...你能帮我最后一次吗?
2021-06-06 20:24:17
您是否检查了那些“方形”图像以检查它们的 url,也许它们的 src 无效 ^^ ?此外,请仅使用 img 的有效 url,不要在 jsx 中添加 png/ico 或任何 ^^ className 仅表示它们的 CSS 类(您可以像 className="" 一样将其留空)谢谢
2021-06-12 20:24:17

当心。你说react-google-map但你正在使用google-map-react. 这是2个不同的包。不要混淆他们的文档。

链接对我不起作用。给出 404。也许它是一个私有存储库。:)
2021-06-09 20:24:17