单张弹出窗口打开(React)

时间:2016-07-27 15:47:52

标签: javascript reactjs leaflet react-leaflet

我正在使用Leaflet for(react-leaflet)处理反应应用程序的地图视图。我可以在地图上绘制标记,但是我点击它们的弹出窗口在点击时不会打开。我首先尝试使用<Marker><Popup>组件,但是this Github问题表明,从地图组件中抓取传单地图对象并明确地将标记绑定到它可能会更好。这就是我所拥有的:

componentDidUpdate() {
    this.map = this.refs.map.leafletElement;
    this.state.rows.map((row) => {
        var marker = L.marker([row.coordinate.latitude, row.coordinate.longitude]);
        marker.addTo(this.map);

        var popupText = util.format('<b>%s</b>', row.venue)
        for(var i = 0; i < row.beers.length; i++){
            var beer = row.beers[i];
            popupText += util.format('<br>%s: %s - %d', beer.brewery, beer.name, beer.rating)
        }

        marker.bindPopup(popupText);
        //marker.on('click', function(e){console.log('clicked!')})
    });
}

render(){
    const cover = {position: 'absolute', left: 0, right: 0, top: 50, bottom: 0};
    return(
        <div>
            <Map scrollWheelZoom={false} center={this.state.position} zoom={14} style={cover} ref="map">
                <TileLayer
                  url='http://{s}.tile.osm.org/{z}/{x}/{y}.png'
                  attribution='&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
                />
            </Map>
        </div>
    );
}

即使我取消注释marker.on('click'...)行,console.log也似乎永远不会发生。任何人都对可能发生的事情有任何想法?

1 个答案:

答案 0 :(得分:1)

issue已截止October 7, 2015。添加具有动作侦听器的子项已得到修复。以下是如何在弹出窗口中添加缩放操作的示例。

<Marker position={position}>
    <Popup>
      <span>
        <button onClick={this.zoomOut}>
          Zoom out
        </button >
        <button onClick = {this.zoomIn}>
          Zoom in
        </button>
      </span>
    </Popup >
  </Marker>

jsfiddle是一个有效的例子。