我有GeoJSON数据,我用它来创建CircleMarkers with react-leafet在地图上,并使用D3.js在它下面创建一个散点图。
我想将两者联系起来,这样当你将鼠标悬停在CircleMarker上时,它在图表上的匹配圆圈也会改变填充和描边颜色。
我尝试给每个人一个独特的课程,但这只是分别突出显示每个圆圈,而不是同时突出显示每个圆圈。
我不知道该怎么办。我可以设置ID或使用每个键来执行此操作吗?
以下是我为地图创建CircleMarkers以及为图表创建圆圈的方法:
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/
答案 0 :(得分:1)
:悬停适用于您主动悬停的任何内容,因此在这种情况下无效。
你可以在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'})}
>
应该让你开始正确的方向
答案 1 :(得分:0)
您使用不透明度属性进入正确的轨道。这就是你可以直接添加到react-leaflet组件的path options之一。如果要更改颜色,可以设置颜色属性,该属性等同于路径选项中的颜色。见这个例子:
<CircleMarker
key={'cm-' + index}
color={index === 0 ? 'red' : 'blue'}
center={coord}
opacity={0.5}
>