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