Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/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
Google visualization 在谷歌地图中显示区域上的文本_Google Visualization - Fatal编程技术网

Google visualization 在谷歌地图中显示区域上的文本

Google visualization 在谷歌地图中显示区域上的文本,google-visualization,Google Visualization,如何在区域上显示文本?当前,它仅显示选定区域,并在鼠标悬停时显示文本。我需要同时显示文本和区域。检查这把小提琴 尽管有点痛苦,但完全有可能通过对API的两次调用来实现这一点。可能有一种方法可以进一步简化这一点,但这在Chrome中肯定有效(没有在其他浏览器上测试过): 使用2个div保存地图。对这两者使用相同的绝对位置和大小。第一个将被隐藏,第二个将有一个更高的z索引(例如10),因此它是在第一个之上分层的(我不确定2个div是绝对必要的,但没有花时间只尝试1个) 创建一个显示模式为“text

如何在区域上显示文本?当前,它仅显示选定区域,并在鼠标悬停时显示文本。我需要同时显示文本和区域。检查这把小提琴


尽管有点痛苦,但完全有可能通过对API的两次调用来实现这一点。可能有一种方法可以进一步简化这一点,但这在Chrome中肯定有效(没有在其他浏览器上测试过):

  • 使用2个div保存地图。对这两者使用相同的绝对位置和大小。第一个将被隐藏,第二个将有一个更高的z索引(例如10),因此它是在第一个之上分层的(我不确定2个div是绝对必要的,但没有花时间只尝试1个)

  • 创建一个显示模式为“text”的映射(我们称之为“textmap”)。将映射加载到第一个分区。注意:此映射需要与“真实”(彩色)映射不同的数据表输入

  • 将侦听器添加到“就绪”的文本映射中。在侦听器回调中,遍历document.getElementsByTagName('text'),对于列表中的每个元素,将其innerHTML(或textContent)和位置信息(来自getBoundingClientRect())保存在数组中(称之为“标签数据数组”)。完成后,如果需要,您可以销毁textmap(我想您也可以销毁隐藏的div)——只需确保保存标签数据数组

  • textmap listener中的最后一步是显示彩色地图并添加数据标签(我不确定为什么,但首先添加标签似乎不起作用。可能在创建地图时,它会自动采用比页面上任何其他内容更高的z索引)。因此,使用map.draw()绘制您的“真实”地图(彩色地图),然后向该地图添加一个侦听器,并在其回调中循环保存的数据标签,并将每个标签作为新的div(绝对位置基于保存的位置数据)添加回,该div的z索引比页面上的任何其他内容都高(例如20)


  • 如果您愿意释放区域颜色,唯一的方法是设置选项
    displayMode:'text'
    谢谢。用户希望同时显示两者。我正在寻找任何可以同时添加文本的jquery或事件列表器。我尝试了谷歌API提供的“选项”参数的所有可能方法。如果它不可能与谷歌地图相比,我必须寻找其他一些替代方法或插件。是的,谷歌图表似乎没有一种方法可以做到这一点,它不容易添加文本,因为每个国家不是一个元素,一些国家有几个元素,它不可能知道哪个是哪个。如果你能做到这一点,你可以去看看
            google.setOnLoadCallback(drawRegionsMap);
    
      function drawRegionsMap() {
    
        var data = google.visualization.arrayToDataTable([
          ['Country', 'Popularity'],
          ['Germany', 200],
          ['United States', 300],
          ['Brazil', 400],
          ['Canada', 500],
          ['France', 600],
          ['RU', 700]
        ]);
    
        var options = {};
    
        var chart = new google.visualization.GeoChart(document.getElementById('regions_div'));
    
        chart.draw(data, options);
      }