我如何传递事件变量/在地图上放置一个标记-当绑定完成事件在数据地图&D3
How do I pass event variable/place a marker on the map - when binding done events in Datamaps & D3?
我正在制作一个美国地图,它是用d3上的数据地图创建的。我想在基于鼠标XY的选定状态上放置一个标记。#map-bubble是我想放在地图上的标记。
我不确定我是否使用正确的方法来做这件事,但我选择的方式-似乎没有办法在点击绑定中抓取鼠标XY。我发现的唯一替代方法是这样的:Javascript -跟踪鼠标位置,这看起来很麻烦。
var map = new Datamap({
element: document.getElementById("map"),
scope: 'usa',
fills: {
defaultFill: "#ABDDA4",
win: '#0fa0fa'
},
geographyConfig: {
dataUrl: null, //if not null, datamaps will fetch the map JSON (currently only supports topojson)
hideAntarctica: true,
borderWidth: 1,
borderColor: '#FDFDFD',
popupTemplate: function(geography, data) { //this function should just return a string
return '';
},
popupOnHover: false, //disable the popup while hovering
highlightOnHover: true,
highlightFillColor: '#FC8D59',
highlightBorderColor: 'rgba(250, 15, 160, 0.2)',
highlightBorderWidth: 2
},
data: {
'TX': { fillKey: 'win' },
'FL': { fillKey: 'win' },
'NC': { fillKey: 'win' },
'CA': { fillKey: 'win' },
'NY': { fillKey: 'win' },
'CO': { fillKey: 'win' }
},
done: function(datamap) {
datamap.svg.selectAll('.datamaps-subunit').on('click', function(event, geography) {
console.log(event.pageY)
var bubbly = $("#map-bubble");
bubbly.css({
position:"absolute",
top: event.pageY,
left: event.pageX
});
console.log(bubbly)
bubbly.fadeIn("slow");
console.log(geography.properties.name);
});
}
});
要访问鼠标单击事件并获得pageX
和pageY
坐标,可以使用全局d3.event
对象。点击这里了解更多。
对于您的示例,尝试用以下命令替换done
函数:
done: function(datamap) {
datamap.svg.selectAll('.datamaps-subunit').on('click', function(geography) {
console.log(d3.event.pageY)
var bubbly = $("#map-bubble");
bubbly.css({
position:"absolute",
top: d3.event.pageY,
left: d3.event.pageX
});
console.log(bubbly)
bubbly.fadeIn("slow");
console.log(geography.properties.name);
});
}
注意我是如何删除第一个参数event的。
这是一个显示工作示例的代码依赖,以及结果
相关文章:
- 加载自定义磁贴后的谷歌地图事件
- 如何从谷歌地图事件访问光标位置(即页面的x和y轴)
- 谷歌地图事件-获取点击元素的父级
- 访问谷歌地图事件中的Backbone.View功能
- 谷歌地图事件侦听器 jQuery
- 融合地图事件点击
- 来自JS库的谷歌地图事件
- 当任何谷歌地图事件被触发时,如何触发操作
- 在链接点击时触发谷歌地图事件侦听器
- 谷歌地图事件
- 如何跟踪谷歌地图事件
- 给出整个D3地图事件监听器
- 如何为必应地图事件创建闭包
- 为什么我的谷歌地图事件监听器不能正常工作
- 发送额外的参数在谷歌地图事件功能
- 谷歌地图事件对象的元素列表后缺少]
- 谷歌地图事件时间戳
- 如何执行谷歌地图事件"bounds_changed"只有一次
- 谷歌地图-事件监听器创建的标记商店定位器
- 如何在茉莉测试框架中处理谷歌地图事件