0.0.11 • Published 3 months ago

@vuemap/district-cluster v0.0.11

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

@vuemap/district-cluster

npm (tag) NPM downloads JS gzip size NPM star

示例

codepen示例

简介

本项目为高德地图的区划聚合图层,图层基于AMapUI的区划插件实现,原插件地址

加载方式

当前项目支持CDN加载和npm加载两种方式。

CDN加载

CDN加载需要先加载高德地图JS,代码如下

<!--加载高德地图JS 2.0 -->
<script src = 'https://webapi.amap.com/maps?v=2.0&key=YOUR_KEY'></script>
<!--加载district-cluster插件 -->
<script src="https://cdn.jsdelivr.net/npm/@vuemap/district-cluster/dist/index.js"></script>

npm加载

npm加载可以直接使用安装库

npm install '@vuemap/district-cluster'

使用示例

CDN方式

<script src = 'https://webapi.amap.com/maps?v=2.0&key=YOUR_KEY'></script>
<script src="https://cdn.jsdelivr.net/npm/@vuemap/district-cluster/dist/index.js"></script>
<script type="text/javascript">
    const map = new AMap.Map('app', {
      center: [120,31],
      zoom: 14,
      viewMode: '3D',
      pitch: 35
    })
    const layer = new AMap.DistrictCluster({
      map,
      // topAdcodes: [130000, 110000],
      getPosition: function(item) {
        if (!item) {
          return null;
        }
        const parts = item.split(',');
        //返回经纬度
        return [parseFloat(parts[0]), parseFloat(parts[1])];
      },
      renderOptions: {
        zooms: [2,16],
        renderClusterMarker(feature, dataItems){
          return new AMap.Marker({
            position: feature.properties.center,
            anchor: 'center',
            content: `<div style="word-break: keep-all;color: #fff;">${feature.properties.name} - ${dataItems.length}</div>`
          })
        },
        renderPolygon(feature, dataItems){
          return new AMap.Polygon({
            path: feature.geometry.coordinates,
            strokeColor: 'red',
          })
        }
      }
    })
    layer.on('featureClick', (e, feature) => {
      console.log('featureClick: ', e, feature)
    })
    layer.on('featureMouseover', (e, feature) => {
      console.log('featureMouseover: ', e, feature)
    })
    layer.on('featureMouseout', (e, feature) => {
      console.log('featureMouseout: ', e, feature)
    })
    layer.on('clusterMarkerClick', (e, feature) => {
      console.log('clusterMarkerClick: ', e, feature)
    })
    fetch('https://a.amap.com/amap-ui/static/data/10w.txt').then(res => {
      return res.text()
    }).then(csv => {
      const data = csv.split('\n');
      layer.setData(data);
    })
  
</script>

npm方式

const map = new AMap.Map('app', {
  center: [120,31],
  zoom: 14,
  viewMode: '3D',
  pitch: 35
})
const layer = new AMap.DistrictCluster({
  map,
  // topAdcodes: [130000, 110000],
  getPosition: function(item) {
    if (!item) {
      return null;
    }
    const parts = item.split(',');
    //返回经纬度
    return [parseFloat(parts[0]), parseFloat(parts[1])];
  },
  renderOptions: {
    zooms: [2,16],
    renderClusterMarker(feature, dataItems){
      return new AMap.Marker({
        position: feature.properties.center,
        anchor: 'center',
        content: `<div style="word-break: keep-all;color: #fff;">${feature.properties.name} - ${dataItems.length}</div>`
      })
    },
    renderPolygon(feature, dataItems){
      return new AMap.Polygon({
        path: feature.geometry.coordinates,
        strokeColor: 'red',
      })
    }
  }
})
layer.on('featureClick', (e, feature) => {
  console.log('featureClick: ', e, feature)
})
layer.on('featureMouseover', (e, feature) => {
  console.log('featureMouseover: ', e, feature)
})
layer.on('featureMouseout', (e, feature) => {
  console.log('featureMouseout: ', e, feature)
})
layer.on('clusterMarkerClick', (e, feature) => {
  console.log('clusterMarkerClick: ', e, feature)
})
fetch('https://a.amap.com/amap-ui/static/data/10w.txt').then(res => {
  return res.text()
}).then(csv => {
  const data = csv.split('\n');
  layer.setData(data);
})

API文档说明

DistrictCluster图层说明

基于AMapUI的DistrictCluster进行改造适配JS2.0的区划聚合插件,支持2D 3D展示,区划面与聚合点支持自定义 new AMap.DistrictCluster(options: DistrictClusterOptions)

参数说明

options: DistrictCluster初始化参数,参数内容如下:

属性名属性类型属性描述
mapAMap.Map地图实例
zIndexNumber图层的层级,默认为 10
visibleBoolean图层是否可见,默认为 true
dataany[]数据源数组,每个元素即为点相关的信息
getPosition(dataItem: any, dataIndex: number) => AMap.LngLatLike返回数据项中的经纬度信息
autoSetFitViewBoolean是否在绘制后自动调整地图视野以适合全部点,默认true
topAdcodesnumber[]顶层区划的adcode列表。(TXTJSON)默认为100000,即全国范围.假如仅需要展示河北和北京,可以设置为130000, 110000,
excludedAdcodesnumber[]需要排除的区划的adcode列表
renderOptionsRenderOptions绘制的引擎的参数,参数列表见下面
RenderOptions参数说明
属性名属性类型属性描述
minHeightToShowSubFeaturesNumber父级区划的最小显示高度,默认630
minSiblingAvgHeightToShowSubFeaturesNumber父级区划的同级兄弟区划的最小平均显示高度,默认600
minSubAvgHeightToShowSubFeaturesNumber子级区划的最小平均显示高度,默认300, 当上面3个条件同时满足时,切换到子级显示
featureStyleByLevelFeatureStyleByLevelOption按区划级别(如下4类)定义的区划面样式 {country: FeatureStyle, province: FeatureStyle, city: FeatureStyle, district: FeatureStyle}, 默认值
minHeightToShowSubFeaturesNumber父级区划的最小显示高度,默认630
areaNodeCacheLimitNumberAreaNode缓存的数量,默认-1,即不限制
getFeatureStyle(feature: any, dataItems: any[]) => StyleOption直接指定某个区划的样式,优先级最高
zoomsNumber, Number绘制的层级范围,默认 2, 30
renderPolygon(feature: any, dataItems: any[]) => AMap.Polygon自定义绘制多边形
renderClusterMarker(feature: any, dataItems: any[]) => AMap.Marker自定义绘制聚合标号
clusterMarkerEventSupportBoolean聚合标注是否开启事件支持,默认true。
clusterMarkerClickToShowSubBoolean点击聚合标注是否触发展示子级区划(即调用 zoomToShowSubFeatures 方法),默认true
featureEventSupportBoolean区划面是否开启事件支持,默认true
featureClickToShowSubBoolean点击区划面是否触发进入子级区划,默认false
FeatureStyle参数说明
属性名属性类型属性描述
strokeColorString线条颜色,使用16进制颜色代码赋值。
strokeOpacityNumber轮廓线透明度,取值范围 0,1 ,0表示完全透明,1表示不透明
strokeWeightNumber轮廓线宽度
fillColorString多边形填充颜色,使用16进制颜色代码赋值
fillOpacityNumber多边形填充透明度,取值范围 0,1 ,0表示完全透明,1表示不透明

featureStyleByLevel默认值
{
  country: {
    strokeColor: 'rgb(31, 119, 180)',
    strokeOpacity: 0.9,
    strokeWeight: 2,
    fillColor: 'rgb(49, 163, 84)',
    fillOpacity: 0.8
  },
  province: {
    strokeColor: 'rgb(31, 119, 180)',
    strokeOpacity: 0.9,
    strokeWeight: 2,
    fillColor: 'rgb(116, 196, 118)',
    fillOpacity: 0.7
  },
  city: {
    strokeColor: 'rgb(31, 119, 180)',
    strokeOpacity: 0.9,
    strokeWeight: 2,
    fillColor: 'rgb(161, 217, 155)',
    fillOpacity: 0.6
  },
  district: {
    strokeColor: 'rgb(31, 119, 180)',
    strokeOpacity: 0.9,
    strokeWeight: 2,
    fillColor: 'rgb(199, 233, 192)',
    fillOpacity: 0.5
  }
}
成员函数
函数名入参返回值描述
setDataArray设定数据源数组,并触发重新绘制
renderLaternumber延时设定的毫秒(默认100)后绘制;该时间段内重复调用只会触发一次。该函数适合短时间内多次触发绘制的场景
render立即重新绘制。因绘制操作较”重“,推荐优先考虑 renderLater 方法。
oneventName:String, handler:Function监听 eventName 事件
offeventName:String, handler:Function注销 eventName 事件
show显示图层
hide隐藏图层
isHiddenBoolean返回是否处于隐藏状态
zoomToShowSubFeaturesadcode:number, center.LngLat 缩放地图至某一级别,此时adcode对应的区划刚好展开显示自身的子级;同时移动地图中心到center(默认为区划行政中心)所指位置。
destroy销毁图层
forceRender强制刷新图层,非特殊情况请勿使用
事件列表
事件名参数描述
featureClickevent, feature鼠标点击feature对应的区域时触发
featureMouseoverevent, feature鼠标移入feature对应的区域时触发
featureMouseoutevent, feature鼠标移出feature对应的区域时触发
clusterMarkerClickevent, record: { adcode:number,feature:Feature,dataItems:Array}鼠标点击聚合标注时触发
0.0.11

3 months ago

0.0.10

5 months ago

0.0.9

11 months ago

0.0.8

12 months ago

0.0.5

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.4

1 year ago

0.0.4-beta

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago