iqual/iq_datamaps

此包的最新版本(2.2)没有提供许可证信息。

Drupal 的 DataMaps 接口

安装: 447

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

公开问题: 0

语言:JavaScript

类型:drupal-custom-module

2.2 2023-10-27 13:49 UTC

This package is auto-updated.

Last update: 2024-08-27 16:00:54 UTC


README

使用 DataMaps(http://datamaps.github.io/)进行地图集成的基本包装器。

背景

我们时不时需要实现一些无法使用 Google 地图实现的地图功能。DataMaps 提供了一个强大且高度可定制的框架,用于任何类型的地图功能。此模块的目的是提供基本的包装器,以便轻松地将 DataMaps 集成到 Web 项目中。

用法

该模块提供了一个包含所有必要资源的 Drupal 库。

iq_datamaps/datamaps_base

它可以像任何其他 Drupal 库一样附加。除了 DataMaps 发行版外,它还包含非常基本的地图和提示样式,以及一个用于与 DataMaps JS 交互的 JS 类: iqDataMapsWrapper

iqDataMapsWrapper 类

从 iqDataMapsWrapper 类创建新的 JS 对象

let mapObject = new iqDataMapsWrapper(element);

element: 将包含地图的 DOM 容器元素。

iqDataMapsWrapper 为 DataMaps 提供了一组基本设置,用于打印基本的世界地图和以下方法:

clearSettings()

移除所有基本设置。现在应用 DataMap 的默认设置。

类型:公共函数

clearSettings()

移除所有基本设置。现在应用 DataMap 的默认设置。

类型:公共函数

restoreBaseSettings()

恢复基本设置。

类型:公共函数

setScope(scope)

恢复基本设置。

类型:公共函数

initMap(scope) ⇒ DataMaps 对象

使用给定的自定义设置打印地图。

类型:公共函数

initMap(scope) ⇒ DataMaps 对象

使用 initMap() 使用给定的自定义设置打印响应式地图。

类型:公共函数

用例/示例

打印(响应式)世界地图

let element = document.getElementById('map-wrapper');
let dataMap = new  iqDataMapsWrapper(element);
dataMap.initResponsiveMap();

在世界地图上突出显示国家

let element = document.getElementById('map-wrapper');
let dataMap = new  iqDataMapsWrapper(element);
let highlights = {
  'CHE': {fillKey:  'active'},
}
dataMap.initResponsiveMap({data:  highlights});

打印瑞士地图

let element = document.getElementById('map-wrapper');
let dataMap = new  iqDataMapsWrapper(element);
dataMap.setScope('che');
dataMap.initResponsiveMap({
  setProjection:  function (element) {
    let  scaleFactor = element.offsetWidth * 12.5;
    var  projection = d3.geo.mercator()
      .center([8.2, 46.8182])
      .scale(scaleFactor)
      .translate([element.offsetWidth / 2, element.offsetHeight / 2]);
    var  path = d3.geo.path().projection(projection);
    return { path:  path, projection:  projection };
  }
});

打印带有标记的瑞士地图

let element = document.getElementById('map-wrapper');
let dataMap = new  iqDataMapsWrapper(element);
let mapMarkers = [
  {
    'radius': 5,
    'latitude': 46.9376,
    'longitude': 7.3950,
    'tooltip_content':  "<strong>Oh, hi Marc!</strong>",
    'fillKey': 'active'
  }
];
dataMap.setScope('che');
dataMap.initResponsiveMap({
  setProjection:  function (element) {
    let  scaleFactor = element.offsetWidth * 12.5;
    var  projection = d3.geo.mercator()
      .center([8.2, 46.8182])
      .scale(scaleFactor)
      .translate([element.offsetWidth / 2, element.offsetHeight / 2]);
    var  path = d3.geo.path().projection(projection);
    return { path:  path, projection:  projection };
  }
}).bubbles(mapMarkers, {
  popupTemplate:  function (geo, data) {
    return  '<div class="map-tooltip">' + data.tooltip_content + '</div>';
  },
  highlightFillColor:  'var(--map-color-active)',
  highlightBorderColor:  'var(--map-color-active)',
});