如何将位置特定数据添加到地图上的标记

How to add location specific data to markers on a map

我对 d3.js 和论坛都很陌生。如果之前已经有人问过这个问题,我深表歉意。我正在尝试创建一张带有商店标记的美国地图,当您将鼠标悬停在这些商店上时,应该会弹出与该位置相关的数据。最终,我试图为这些标记添加一个垂直条形图,但现在我将只显示商店的名称和地址,以便我可以分解流程以充分理解它。我有两个 json 文件: 1. us.json 2. newstorelocations.json(包含每个位置的名称、地址、纬度和经度)

目前我拥有的是一张美国地图,每个商店都有标记。当您将鼠标悬停在它上面时,标记会变成红色。代码在这里: http://bl.ocks.org/binishbaig/a4d93ddbb599eaf5f20a

我已经尝试过并认为应该有效的代码在这里: http://bl.ocks.org/binishbaig/e154f91c726fb8326c3b

我只是不知道为什么当你将鼠标悬停在第二个上时,它没有显示商店名称。

如有任何帮助,我们将不胜感激。提前致谢!

您遇到的问题在文档的第 122 行。它正在尝试读取未定义 variable/object 的属性 "name"。这意味着变量 d,你应该作为参数传递给你的匿名函数,实际上并没有被传递。看看是否只是从匿名函数中删除 d(d){ return d.name; } 第 122 行的定义允许您从我们可以看到它可访问的范围访问对象 d(因为我们看到该对象被记录到控制台)。如果这不起作用,那么您将需要找到另一种方法来访问该对象,对此有不止一种解决方案。

主要问题发生在第 122 行。d 变量是匿名函数的一部分,因此它不是上面定义的那个。我解决了将 d (d.name) 变量的名称属性作为值传递给 text 方法而不是使用匿名的问题功能。

其他问题与#tooltip 选择器(第 57 行 your code)有关。您在第 58 行的 map 元素之后定义了它,因此当指向坐标时它没有显示。我通过将 #tooltip 选择器移动到地图元素的顶部来解决它。

My solution: DEMO

希望我的回答对您有所帮助。 谢谢。