Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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 amCharts4数据更改不会触发地图重画_Javascript_Amcharts_Amcharts4 - Fatal编程技术网

Javascript amCharts4数据更改不会触发地图重画

Javascript amCharts4数据更改不会触发地图重画,javascript,amcharts,amcharts4,Javascript,Amcharts,Amcharts4,我正在使用它作为流星计划的一部分。目标是显示地图并在地图上显示地图标记。每次数据更改时,地图标记都必须自我更新并指向新位置 我已经尝试重新使用 我添加的唯一额外的一点是为imageSeries重新分配一组不同的数据,以便它更新地图上的标记 我有一个很好的方法来演示正在发生的事情。setTimeout函数用于在5秒后模拟数据更改 setTimeout(function(){ $('.map-marker').remove() imageSeries.data =

我正在使用它作为流星计划的一部分。目标是显示地图并在地图上显示地图标记。每次数据更改时,地图标记都必须自我更新并指向新位置

我已经尝试重新使用

我添加的唯一额外的一点是为imageSeries重新分配一组不同的数据,以便它更新地图上的标记

我有一个很好的方法来演示正在发生的事情。setTimeout函数用于在5秒后模拟数据更改

  setTimeout(function(){
        $('.map-marker').remove()
        imageSeries.data = [{
           "zoomLevel": 5,
           "scale": 0.5,
           "title": "Brussels",
           "latitude": 50.8371,
           "longitude": 4.3676
         }];
        imageSeries.validateData();
    }, 5000)
数据更改在5秒后发生。但在手动平移地图或放大/缩小之前,新点不会显示在地图上

如何解决此问题

AmCharts会在重新绘制/更新后更新地图。问题是,您使用的是自定义HTML标记,而不是像中那样仅使用图像的本机功能。由于您使用的是自定义设置,因此还需要一个额外的步骤(顺便说一句,这是一个为v3编写的演示端口,它也没有本机HTML标记)

在演示中,
updateCustomMarkers
首先负责在地图上放置标记。请注意,演示通过将此方法附加到地图实例的
mappositionchanged
事件来设置自定义标记,由于创建时发生缩放/视口定位,因此在地图初始化期间也会调用该事件。这也是为什么只有在手动放大后才能看到标记。您的数据更新超时不会调用
updateCustomMarkers
,因此除非您随后手动调用该方法,否则不会绘制自定义标记;请注意,更换整个阵列时,也不需要调用
invalidateData

setTimeout(function() {
  $('.map-marker').remove()
  imageSeries.data = [{
    "zoomLevel": 5,
    "scale": 0.5,
    "title": "Brussels",
    "latitude": 50.8371,
    "longitude": 4.3676
  }];
  updateCustomMarkers();
}, 5000)

请注意,使用本机图像时不需要此额外步骤,因为地图将自动更新该场景中的标记。

感谢您的解释!我让它工作了。我假设实际的方法是使用本机方法绘制标记,正如您在演示中所建议的那样。我想知道我们怎样才能把css类添加到这些元素中。我怎样才能使它们跳动呢。