传单标记并不总是适用

时间:2017-07-19 12:07:56

标签: node.js reactjs leaflet jsx react-leaflet

所以我正在使用传单反应,我需要添加一些圆圈标记。

现在这个代码有效......在地图上点击一个圆圈标记应该添加但有时它不是。看似随意,它只是不添加可见标记。有时,如果我更改缩放级别,标记将变为可见,但并非总是如此。所有代码每次都运行,因此不会调用addMarker(),也不会删除最后一个标记(通过清除标记图层)。

谢谢,Ed。

1 个答案:

答案 0 :(得分:2)

您似乎没有使用react-leaflet包。我建议尝试一下。以下是一些示例代码,说明如何在点击事件中向地图添加标记:

const React = window.React;
const { Map, TileLayer, Marker, Popup } = window.ReactLeaflet;

class SimpleExample extends React.Component {
  constructor() {
    super();
    this.state = {
      markers: [[51.505, -0.09]]
    };
  }

  addMarker = (e) => {
    const {markers} = this.state
    markers.push(e.latlng)
    this.setState({markers})
  }

  render() {
    return (
      <Map 
        center={[51.505, -0.09]} 
        onClick={this.addMarker}
        zoom={13} 
        >
        <TileLayer
          attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
        />
        {this.state.markers.map((position, idx) => 
          <Marker key={`marker-${idx}`} position={position}>
          <Popup>
            <span>A pretty CSS3 popup. <br/> Easily customizable.</span>
          </Popup>
        </Marker>
        )}
      </Map>
    );
  }
}

window.ReactDOM.render(<SimpleExample />, 
document.getElementById('container'));

这里有一个显示实施的jsfiddle:https://jsfiddle.net/q2v7t59h/413/