我有GeoJSON数据,可用来在 map 上创建带有react-leafet的CircleMarkers,并使用D3.js在其下创建散点图。
我想将两者链接在一起,以便当您将鼠标悬停在CircleMarker上时,图表上匹配的圆圈也会更改填充和描边颜色。
我试着给每个类(class)一个独特的类(class),但这只会分别突出显示每个圆圈,而不是同时突出显示每个圆圈。
我不确定如何进行。我可以设置一个ID或使用每个键来执行此操作吗?
这是我为 map 和图表创建圆圈的方式:
const chartDots = pointsData.features.map( (pt, index) => {
return (
<circle
key={"circle-" + index}
className={"myClass-" + index}
fill="dodgerBlue"
cx={xScale(pt.properties.value1)}
cy={yScale(pt.properties.value2)}
opacity={0.5}
r={10}
>
<title>Name: {pt.properties.name}</title>
</circle>
)
})
const myPoints = pointsData.features.map( (pt, index) => {
const coord = [pt.geometry.coordinates[1], pt.geometry.coordinates[0]]
return (
<CircleMarker
key={'cm-' + index}
className={"myClass-" + index}
center={coord}
opacity={0.5}
>
<Popup>
<span>{pt.properties.name}</span>
</Popup>
</CircleMarker>
)
})
链接到jsfiddle上的完整代码:https://jsfiddle.net/mendoza_line/39n4rs4q/
最佳答案
:hover可以处理您正在悬停的所有内容,因此在这种情况下将不起作用。
您可以在circleMarker上使用onMouseOver和onMouseOut,我对D3不熟悉,但我确定它具有类似的功能
<CircleMarker
key={'cm-' + index}
className={"myClass-" + index}
center={coord}
opacity={0.5}
onMouseOver={(e) => e.target.setStyle({fillColor: 'green'})}
onMouseOut={(e) => e.target.setStyle({fillColor: 'blue'})}
>
应该让您朝正确的方向开始
关于javascript - 将React-Leaflet CircleMarker和悬停点上的散点图连接起来,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46125698/