D3点击处理程序不工作在传单地图层
d3 click handler not working on leaflet map layer
晚上好。
我在传单地图上添加了一系列d3点,然后想在这些点上使用点击处理程序来驱动另一个面板。但我似乎没法让联络人接电话。为什么?
你可以看到到目前为止的文件:http://jsbin.com/bewudenide/edit?html,输出
在leaf .js的自定义图层上生成圆点的代码:
var feature = g.selectAll("circle")
.data(collection)
.enter().append("circle")
.style("stroke", "black")
.style("opacity", .6)
.style("fill", "steelblue")
.attr("r", 10);
我认为为鼠标悬停和单击事件添加单击处理程序将是简单的情况:
feature.on("click", click);
function click(d) {
console.log(d.name);
}
:
feature.on("mouseover", mouse_over);
function mouse_over(d) {
d3.select(this)
.transition()
.duration(500)
.style("background", "lightBlue")
.style("color", "white");
}
当点击函数注册到控制台时,我不清楚为什么mouse_over函数不改变点的样式。我也希望看到指针改变,但它没有。
请原谅我缺乏d3, javascript或传单的经验。
编辑:我现在意识到我没有添加现有代码使用的一些JSON。它看起来像
[{
"index":1,"name":"Adderley Green Surgery","total":276266.2700000001},{
"index":2,"name":"Alton Surgery","total":416559.8999999998},{
"index":3,"name":"Apsley Surgery","total":1023757.89999999998}]
如果您使用的是传单1.0,我认为原因是传单将"pointer-event"设置为"none":图显示宣传单
中的SVG使得click事件不能被触发。所以解决方案很简单,只需使用css将"pointer-event"设置为"all",然后它就可以工作了!我用传单1.0试过了。
pointer-events:指针事件描述
问题是样式属性对svg元素无效。
试一试……
feature.on("mouseover", mouse_over);
function mouse_over(d) {
d3.select(this)
.transition()
.duration(500)
.style("fill", "lightBlue")
.style("stroke", "white");
}
还是……
feature.on("mouseover", mouse_over);
function mouse_over(d) {
d3.select(this)
.transition()
.duration(500)
.style({fill: "lightBlue", stroke: "white"});
}
还是……
feature.on("mouseover", mouse_over);
function mouse_over(d) {
d3.select(this)
.transition()
.duration(500)
.attr({fill: "lightBlue", stroke: "white"});
}
相关文章:
- 更改图层中单个矢量特征的图标
- 谷歌地图热图图层点半径
- 谷歌地图-更改图层图标大小
- 如何通过ID获取图层对象
- CS5隐藏图层的速度非常慢
- 开放图层导出为 KML 并保留我的地图样式
- 传单问题:使折线的图层组不可单击
- 在谷歌地图HTML中简单地添加KML图层
- 在鼠标单击时添加标记并删除打开图层中现有的标记
- 单击另一个用于显示/隐藏图层的按钮时,在Adobe PDF中隐藏/显示按钮的代码是什么
- 检测鼠标悬停/鼠标单击,无论 Z 顺序/图层级别如何
- 如何仅针对单击的图层触发单击事件,而不为其父层触发单击事件
- 如何使用 OpenLayers 在地图顶部创建可单击的格网图层
- 获取已在 OpenLayers 3 中单击的图层的特征属性
- 保留 Google 地图在复选框单击时缩放到 kml 图层
- 单击地图(GeoServer 图层)时会显示多个信息框
- Adobe Acrobat Javascript表单-在多个页面中显示/隐藏图层
- 图层二Canvas'在彼此的顶部+单击事件
- 当图层控件移出贴图元素时,不会发出传单贴图单击事件
- 宣传单:有效地淡入/淡出图层组