javascript - dc 传单 - 动态标记

标签 javascript leaflet dc.js

我有一个用 leaflet 构建的 map 和 dc.js并整合dc.leaflet .

如果通过 PHP 将数据提供给 JSON,则所有内容都可以毫无问题地显示和过滤。 根据数据的不同,标记的数量是可变的,但一次大约有 40-50 个,每个标记都显示标准的默认标记。

我想做的是根据数据字段显示不同的标记,这样大约有 6 个可用。

这是 dc 对象:

var markerMap = dc_leaflet.markerChart(".map",group1)
    .dimension(mapDim)
    .group(mapDimGroup)
    .width(450)
    .height(630)
    .center([41.08763212467916, -77.37066651228817])
    .zoom(10)
    .cluster(false) //Turn off Clustering 
    .valueAccessor(function(kv) {return kv.value.count;})
    .locationAccessor(function(kv) {return kv.value.geo;})
    .popup(function(kv) {return kv.key;})

根据文档,我应该可以使用 .icon() 但这似乎不起作用。

比如

if d.icon = 'icon1' then icon1.png

等....

有没有人有添加动态图标的经验?

干杯

最佳答案

它起作用了——只是 Leaflet 希望看到它自己的图标类而不是原始 URL。

查看dc.leaflet.js的源码,默认图标是这样指定的:

var _icon = function(d, map) {
    return new L.Icon.Default();
};

the Leaflet documentation 中查找此类:

Usage example

var myIcon = L.icon({
    iconUrl: 'my-icon.png',
    iconSize: [38, 95],
    iconAnchor: [22, 94],
    popupAnchor: [-3, -76],
    shadowUrl: 'my-icon-shadow.png',
    shadowSize: [68, 95],
    shadowAnchor: [22, 94]
});

假设我们要为保加利亚的所有太阳能装置展示八 Angular 猫。

首先,我们需要更改缩减以保留原始数据行中的 type 字段。这有点痛苦,但这是我们为 crossfilter 为我们提供的自动减少和过滤功能付出的代价:

  var facilitiesGroup = facilities.group().reduce(
      function(p, v) {
          p.count++;
          p.type = v.type;
          return p;
      },
      function(p, v) {
          p.count--;
          return p;
      },
      function() {
          return {count: 0, type: null};
      })

现在我们可以将 octocats 放在我们在简化数据中看到类型为 solar 的任何地方。有很多,所以让我们以 20x20 像素显示它们:

      .icon(function(kv) {
          if(kv.value.type === 'solar')
              return L.icon({
              iconSize: [20, 20],
              iconUrl: 'https://dc-js.github.io/dc.leaflet.js/GitHub-Mark-64px.png'});
          else return new L.Icon.Default();
      })

是的!我们占领了保加利亚!

solar octocats in bulgaria

Example fiddle.

关于javascript - dc 传单 - 动态标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51046952/

相关文章:

JavaScript 读取响应 - JSON - FaceAPI

angular - 如何将传单导入 Angular 项目?

传单 : how to get the popup content on marker click?

javascript - 使用 Leaflet.js 如何在拖动端获取 map 纬度/经度?

javascript - dc.js:如何在对象元素列表上减少计数?

javascript - 限制服务器填充 HTML 下拉列表(使用/JavaScript)

javascript - 如何获取数组 React js 中的第一个唯一 ID 元素和最后一个唯一 ID 元素

javascript - dc.js 聚合数据表

javascript - 从多个对象中获取唯一键

javascript - 未捕获的类型错误 : Cannot read property 'textContent' of null error