Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 缩放到地图中的特定D3路径,无需单击_Javascript_D3.js - Fatal编程技术网

Javascript 缩放到地图中的特定D3路径,无需单击

Javascript 缩放到地图中的特定D3路径,无需单击,javascript,d3.js,Javascript,D3.js,我已经创建了一个交互式地图。现在让我们假设有人向您发送了这样一个链接:例如 这是一个直接链接,可以在特定岛上创建标记,如您所见。此外,我想放大到岛上,或者让我们说的标记。但直到现在,除了单击调用之外,我还没有找到一个好的解决方案 我找到了我想要的缩放方式。但正如标题所说,我不想单击区域/标记或调用单击。我想放大直接当你来的网址 那么,我该怎么做呢 d3.select('.maptimeline-IsleOfBalar').call(function(d) { // zoom to the

我已经创建了一个交互式地图。现在让我们假设有人向您发送了这样一个链接:例如

这是一个直接链接,可以在特定岛上创建标记,如您所见。此外,我想放大到岛上,或者让我们说的标记。但直到现在,除了单击调用之外,我还没有找到一个好的解决方案

我找到了我想要的缩放方式。但正如标题所说,我不想单击区域/标记或调用单击。我想放大直接当你来的网址

那么,我该怎么做呢

d3.select('.maptimeline-IsleOfBalar').call(function(d) {
    // zoom to the d
});

问题是我需要对象,但这样我只得到一个数组。点击事件很容易确定对象。

因此解决方案是创建自定义点击功能。首先,使用它的方法是:

$(".maptimeline-"+classtext).d3Click();
最后的结果是:

jQuery.fn.d3Click = function () {
    this.each(function (i, e) {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        e.dispatchEvent(evt);
    });
};

这将在特定元素上创建假单击。正如您在这里看到的:它实际上运行得很好。

我不确定问题出在哪里。你不能确定你想放大什么吗?如果你在巴拉尔岛上看不到红色指针,你可能需要重新加载。如果你看到了:我想把地图放在小岛的中心,然后放大,比如说20倍。这就是我想要的一切=)因此,只需获取与之相关联的数据并调用示例中的
click
函数即可。因此,在标记上设置click事件是唯一的方法吗?不,当在其他上下文中单击标记时,例如在加载页面时,可以调用正在调用的任何代码。