首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >amcharts4动态位置标记

amcharts4动态位置标记
EN

Stack Overflow用户
提问于 2019-03-13 17:41:09
回答 1查看 923关注 0票数 2

https://www.amcharts.com/demos/custom-html-elements-map-markers/

当我点击按钮时,我需要添加一个位置标记。我尝试了imageSeries.data.pushaddDatainit和其他方法,但当我移动图表(mappositionchanged)时,会触发位置更新。我需要让它自动工作,而不是移动或缩放图表。

我使用的是amcharts版本4。

代码语言:javascript
复制
function test() {
    imageSeries.addData({
        "zoomLevel": 5,
        "scale": 0.5,
        "title": "Pretoria",
        "latitude": -25.7463,
        "longitude": 28.1876
    });
    alert(imageSeries.data);
}
代码语言:javascript
复制
<button onClick="test();">click</button>
EN

回答 1

Stack Overflow用户

发布于 2019-03-14 03:25:38

我无法复制这种行为,在这种情况下,通过addData method将数据动态添加到MapImageSeries需要刷新图表(值得注意的是,用户posted the same issue to our GitHub已经解决了这个问题)。imageSeries.addData(...)应该可以很好地工作。

设置代码:

代码语言:javascript
复制
// Create map instance
var chart = am4core.create("chartdiv", am4maps.MapChart);

// Set map definition
chart.geodata = am4geodata_worldLow;

// Create map polygon series
var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries());

// Make map load polygon (like country names) data from GeoJSON
polygonSeries.useGeodata = true;

// Create image series
var imageSeries = chart.series.push(new am4maps.MapImageSeries());

// Create a circle image in image series template so it gets replicated to all new images
var imageSeriesTemplate = imageSeries.mapImages.template;
var circle = imageSeriesTemplate.createChild(am4core.Circle);
circle.radius = 4;
circle.fill = am4core.color("#B27799");
circle.stroke = am4core.color("#FFFFFF");
circle.strokeWidth = 2;
circle.nonScaling = true;
circle.tooltipText = "{title}";

// Set property fields
imageSeriesTemplate.propertyFields.latitude = "latitude";
imageSeriesTemplate.propertyFields.longitude = "longitude";

测试代码(addPlace方法):

代码语言:javascript
复制
// Add data for the three cities

var data = [{
  "latitude": 48.856614,
  "longitude": 2.352222,
  "title": "Paris",
  zoomLevel: 1
}, {
  "latitude": 40.712775,
  "longitude": -74.005973,
  "title": "New York",
  zoomLevel: 2
}, {
  "latitude": 49.282729,
  "longitude": -123.120738,
  "title": "Vancouver",
  zoomLevel: 4
}];

const dataIterator = data[Symbol.iterator]();

function addPlace() {
  var item = dataIterator.next();
  if ( !item.done) {
    imageSeries.addData(item.value);
  }
}

下面是一个快速演示:

https://codepen.io/team/amcharts/pen/c5a5803d81b9517a8fd37d4e2c6541ed

“添加标记”按钮每次都会添加一个标记(最多3次,因为数组中只有3个项目),而不必刷新图表(通过invalidate或其他方式)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55138620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档