npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@vuemap/district-cluster

v0.0.11

Published

高德地图amap的区划聚合图层插件

Downloads

854

Readme

@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初始化参数,参数内容如下:

| 属性名 | 属性类型 | 属性描述 | |-----------------|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | map | AMap.Map | 地图实例 | | zIndex | Number | 图层的层级,默认为 10 | | visible | Boolean | 图层是否可见,默认为 true | | data | any[] | 数据源数组,每个元素即为点相关的信息 | | getPosition | (dataItem: any, dataIndex: number) => AMap.LngLatLike | 返回数据项中的经纬度信息 | | autoSetFitView | Boolean | 是否在绘制后自动调整地图视野以适合全部点,默认true | | topAdcodes | number[] | 顶层区划的adcode列表。(TXTJSON)默认为[100000],即全国范围.假如仅需要展示河北和北京,可以设置为[130000, 110000], | | excludedAdcodes | number[] | 需要排除的区划的adcode列表 | | renderOptions | RenderOptions | 绘制的引擎的参数,参数列表见下面 |

RenderOptions参数说明

| 属性名 | 属性类型 | 属性描述 | |--------------------------------------|--------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| | minHeightToShowSubFeatures | Number | 父级区划的最小显示高度,默认630 | | minSiblingAvgHeightToShowSubFeatures | Number | 父级区划的同级兄弟区划的最小平均显示高度,默认600 | | minSubAvgHeightToShowSubFeatures | Number | 子级区划的最小平均显示高度,默认300, 当上面3个条件同时满足时,切换到子级显示 | | featureStyleByLevel | FeatureStyleByLevelOption | 按区划级别(如下4类)定义的区划面样式 {country: FeatureStyle, province: FeatureStyle, city: FeatureStyle, district: FeatureStyle} , 默认值 | | minHeightToShowSubFeatures | Number | 父级区划的最小显示高度,默认630 | | areaNodeCacheLimit | Number | AreaNode缓存的数量,默认-1,即不限制 | | getFeatureStyle | (feature: any, dataItems: any[]) => StyleOption | 直接指定某个区划的样式,优先级最高 | | zooms | [Number, Number] | 绘制的层级范围,默认 [2, 30] | | renderPolygon | (feature: any, dataItems: any[]) => AMap.Polygon | 自定义绘制多边形 | | renderClusterMarker | (feature: any, dataItems: any[]) => AMap.Marker | 自定义绘制聚合标号 | | clusterMarkerEventSupport | Boolean | 聚合标注是否开启事件支持,默认true。 | | clusterMarkerClickToShowSub | Boolean | 点击聚合标注是否触发展示子级区划(即调用 zoomToShowSubFeatures 方法),默认true | | featureEventSupport | Boolean | 区划面是否开启事件支持,默认true | | featureClickToShowSub | Boolean | 点击区划面是否触发进入子级区划,默认false |

FeatureStyle参数说明

| 属性名 | 属性类型 | 属性描述 | | ---- |--------|-----------------------------------| | strokeColor | String | 线条颜色,使用16进制颜色代码赋值。 | | strokeOpacity | Number | 轮廓线透明度,取值范围 [0,1] ,0表示完全透明,1表示不透明 | | strokeWeight | Number | 轮廓线宽度 | | fillColor | String | 多边形填充颜色,使用16进制颜色代码赋值 | | fillOpacity | Number | 多边形填充透明度,取值范围 [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
  }
}
成员函数

| 函数名 | 入参 | 返回值 | 描述 | |-----------------------|------------------------------------|---------|--------------------------------------------------------------------| | setData | Array | 无 | 设定数据源数组,并触发重新绘制 | | renderLater | number | 无 | 延时设定的毫秒(默认100)后绘制;该时间段内重复调用只会触发一次。该函数适合短时间内多次触发绘制的场景 | | render | 无 | 无 | 立即重新绘制。因绘制操作较”重“,推荐优先考虑 renderLater 方法。 | | on | eventName:String, handler:Function | 无 | 监听 eventName 事件 | | off | eventName:String, handler:Function | 无 | 注销 eventName 事件 | | show | 无 | 无 | 显示图层 | | hide | 无 | 无 | 隐藏图层 | | isHidden | 无 | Boolean | 返回是否处于隐藏状态 | | zoomToShowSubFeatures | adcode:number,[ center.LngLat ] | 无 | 缩放地图至某一级别,此时adcode对应的区划刚好展开显示自身的子级;同时移动地图中心到center(默认为区划行政中心)所指位置。 |、 | destroy | 无 | 无 | 销毁图层 | | forceRender | 无 | 无 | 强制刷新图层,非特殊情况请勿使用 |

事件列表

| 事件名 | 参数 | 描述 | |--------------------|-----------------------------------------------------------------|---------------------| | featureClick | event, feature | 鼠标点击feature对应的区域时触发 | | featureMouseover | event, feature | 鼠标移入feature对应的区域时触发 | | featureMouseout | event, feature | 鼠标移出feature对应的区域时触发 | | clusterMarkerClick | event, record: { adcode:number,feature:Feature,dataItems:Array} | 鼠标点击聚合标注时触发 |