1.0.1 • Published 3 years ago

ht-map v1.0.1

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

EasyMap地图服务引擎

使用方法

Symbol配置说明

  • opacity 几何的整体不透明度。
  • shadowBlur 几何周围阴影的水平
  • shadowColor 几何图形周围阴影的颜色,一种CSS样式颜色
  • shadowOffsetX 指定阴影将在水平距离中偏移的距离
  • shadowOffsetY 指定阴影将在垂直距离上偏移的距离
MarkerTextPolygons and Lines
markerOpacity 标记通用属性 标记的整体不透明度textPlacement 该标签应如何放置(point vertex line vertex-first vertex-last)lineColor 线的颜色
markerWidth 标记的宽度textFaceName 字体lineWidth 线的宽度
markerHeight 标记的高度textFont 与CSS font属性相同,定义字体系列,粗体,大小和文本样式,如果设置,它将覆盖textFaceNamelineDasharray 一对长度值a,b,其中(a)是划线长度,(b)是间隙长度
markerDx X轴偏移量textWeight 与CSS font-weight相同,指定字体粗细lineOpacity 线的不透明度
markerDy Y轴偏移量textStyle 与CSS字体样式相同,指定字体样式lineJoin 连接线样式(miter miter-revert round bevel)
markerHorizontalAlignment 标记从其中心点开始的水平对齐方式(left middle right)textSize 文字大小lineCap 线尾的显示(butt round square)
markerVerticalAlignment 标记从其中心点开始的垂直对齐方式(top middle bottom)textFill 指定文本的颜色linePatternFile 图像文件要重复并沿一条线弯曲
markerPlacement 将标记放置在点上,多边形的中心,或者放置在一条线上(point vertex line vertex-first vertex-last)textOpacity 文本的不透明度lineDx x偏移
markerRotation 标记通用属性END 标记围绕标记放置点旋转的程度,沿逆时针方向textHaloFill 文本周围的光晕颜色lineDy y偏移
markerFile 图像标记 文件urltextHaloRadius 指定光晕的半径polygonFill 多边形颜色
markerType 矢量标记 矢量标记的形状(ellipse cross x diamond bar square triangle pin pie)textHaloOpacity 指定文本光晕的不透明度polygonOpacity 多边形的不透明度
markerFill 标记区域的颜色textWrapWidth 换行之前,文本块的长度(以像素为单位)。如果设置为零,则文本不会自动换行polygonPatternFile 用作重复图案填充在多边形内的图像
markerFillPatternFile 用作标记内重复图案的图像textWrapCharacter 使用此字符来包装长文本,例如 '\n'
markerFillOpacity 标记的填充不透明度textLineSpacing 行之间的垂直间距调整
markerLineColor 标记周围的轮廓颜色textHorizontalAlignment 文本从其中心点开始的水平对齐方式(left middle right)
markerLineWidth 标记周围的轮廓宽度textVerticalAlignment 文本从其中心点的垂直对齐方式(top middle bottom)
markerLineOpacity 标记轮廓的不透明度textAlign 定义文本的对齐方式(left right center)
markerLineDasharray 一对长度值a,b,其中(a)是划线长度,(b)是间隙长度textRotation
markerLinePatternFile 要重复的图像文件,并沿标记线弯曲textDx x偏移
markerPath 定义标记形状的SVG路径textDy y偏移
markerPathWidth 生成的SVG元素的width属性

markerPathHeight 矢量标记属性END 生成的SVG元素的height属性

引入JS文件

  <link rel="stylesheet" href="emap.css" type="text/css">
  <script type="text/javascript" src="emap.js"></script>

地图渲染

// 默认地图
const map = new emap.EasyMap("map");

// 自定义地图
const map = new emap.EasyMap("map", {
    defaultLayer: new emap.layers.EasyTileLayer('base', {
        urlTemplate: 'http://webrd{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
        subdomains: ['01', '02', '03', '04']
    }),
    center: [114.515013, 38.041251],
    extent: [113.515013, 39.041251, 115.515013, 37.041251],
    zoomControl: false,
    scaleControl: false,
    overviewControl: false,
    zoom: 8
});

添加地图控件

// 初始化地图
const map = new emap.EasyMap("map");

// 单独添加控件
const control = new emap.controls.PositionControl(
    {
        position: 'bottom-right',
        copiable: true,
        styles: {
            backgroundColor: 'black',
            fontColor: 'white',
            fontSize: '16px'
        }
    }
).addTo(map)

// 通过组合控件添加控件
const control = new emap.controls.EasyControl(
    [
        // 控件信息及配置项,每个对象表示一个控件
        {
            id: 'zoom',
            label: '缩放控件',
            type: 'Zoom',
            option: {
                position: 'top-right'
            }
        },
        {
            id: 'position',
            label: '鼠标位置控件',
            type: 'PositionControl',
            option: {
                position: 'bottom-right'
            }
        }
        // 更多控件
    ],
    {
        // 控件管理ToolBar的配置,该控件可以控制上面控件的显示
        position: 'top-left',
        menuName: '控件管理'
    }
).addTo(map)

添加图层

// 初始化地图
const map = new emap.EasyMap("map")

// 创建图层
const layer = new emap.layers.EasyVectorLayer('layer')

// 添加到地图
map.addLayer(layer);

添加点

// 初始化地图
const map = new emap.EasyMap("map")

// 创建点
const marker = new emap.Geom().createPointFeature(
    // 点坐标
    [114.515013, 38.041251],
    // 点配置
    {
        visible: true,
        editable: true,
        cursor: 'pointer',
        symbol: [{
            textName: '华通地图引擎',
            textFill: '#f00',
            textSize: 30
        }]
    }
)

// 添加到地图
marker.addTo(map)

添加线

// 初始化地图
const map = new emap.EasyMap("map")

// 创建线
const path = [
    [116.368904, 39.913423],
    [116.382122, 39.901176],
    [116.387271, 39.912501],
    [116.398258, 39.904600]
];
const lineString = new emap.Geom().createLineStringFeature(
    // 组成线的各个点的坐标
    [path[0], path[1], path[2], path[3]],
    // 线配置
    {
        arrowStyle : 'classic',
        arrowPlacement : 'vertex-last',
        smoothness: 0,
        symbol: {
            lineColor: '#FF0000',
            lineWidth: 5
        }
    }
)

// 添加到地图
lineString.addTo(map)

添加多边形

// 初始化地图
const map = new emap.EasyMap("map")

// 创建多边形
const path = [
    [116.403322, 39.920255],
    [116.410703, 39.897555],
    [116.402292, 39.892353],
    [116.389846, 39.891365]
];
const options = {
    symbol:  {
        lineColor: '#34495e', // 边框线的颜色
        lineWidth: 2, // 线的宽度
        polygonFill: 'rgb(135,196,240)', // 填充色
        polygonOpacity: 0.6, // 透明度
    }
};
const polygon = new emap.Geom().createPolygonFeature(path, options);

// 添加到地图
polygon.addTo(map);

添加弹窗

// 初始化地图
const map = new emap.EasyMap("map")

// 创建弹窗
const infoWindow = new emap.InfoWindow({
    width: 200,
    single: true,
    autoPan: false,
    content: '<div>我是信息窗体的内容,我在地图上</div>',
    autoOpenOn: '' // 添加该选项可以去除自带的click打开窗体功能,建议打开窗体操作手动设置,否则事件不受控,会出现无法阻止冒泡的问题
})

// 添加到地图
infoWindow.addTo(map)

// 绑定事件
map.on('click', e => {
    e.domEvent.stopPropagation()
    infoWindow.show([e.coordinate.x, e.coordinate.y])
})

添加热力图层

// 初始化地图
const map = new emap.EasyMap("map")

// 获取热力数据
const data = []
for (let i = 1; i < 10000; i++) {
    const point = []
    const x = parseFloat('114.' + randomNum(435773, 578595))
    const y = parseFloat('38.' + randomNum(913, 11111358))
    point[0] = x
    point[1] = y
    point[2] = randomNum(1, 10000)
    data.push(point)
}

// 创建热力图层,自动添加到地图
const heatlayer = map.createHeatMap('heat', data, {
    heatValueScale: 0.7,
    forceRenderOnRotating: true,
    forceRenderOnMoving: true
})

// 生成从minNum到maxNum的随机数
function randomNum(minNum, maxNum) {
    switch (arguments.length) {
        case 1:
            return parseInt(Math.random() * minNum + 1, 10);
            break;
        case 2:
            return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
            break;
        default:
            return 0;
            break;
    }
}

添加聚合点

// 初始化地图
const map = new emap.EasyMap("map")

// 获取点数据,参见聚合要素图层demo
const markers = Foo()

// 创建聚合要素图层
const clusterLayer = map.createClusterLayer('cluster', markers, {
    noClusterWithOneMarker: false,
    maxClusterZoom: 18,
    symbol: {
        markerType: 'ellipse',
        markerLineColor: '#fff',
        markerWidth: { property:'count', type:'interval', stops: [[0, 40], [9, 60], [99, 80]] },
        markerHeight: { property:'count', type:'interval', stops: [[0, 40], [9, 60], [99, 80]] }
    },
    drawClusterText: true,
    geometryEvents: true,
    single: true
});

// 添加到地图
map.addLayer(clusterLayer);

添加轨迹

// 初始化地图
const map = new emap.EasyMap("map")

// 轨迹配置
let routers = [
    {
        "path": [
            // [x, y, time]
            [114, 37, 0],
            [118, 39, 3400],
            [117, 37, 5000],
            [110, 39, 8000],
        ],
        // 轨迹回放的图标
        markerSymbol: {
            markerFile: './images/car.png',
            markerDy: 16
        },
        // 全览轨迹线
        lineOptions: {
            // arrowStyle: 'classic',//增加箭头
            // arrowPlacement: 'vertex-last',
        },
        lineSymbol: {
            lineColor: '#f00',
            lineWidth: 6,
            lineDasharray: [10, 5],//设置为虚线
            lineJoin: 'bevel',
        },
        // 走过的轨迹线
        trailLineOptions:{
            // arrowStyle: 'classic',
            // arrowPlacement: 'vertex-last',
        },
        trailLineSymbol: {
            lineColor: '#0ff',
            lineWidth: 5,
            lineJoin: 'bevel'
        }
    }
]

// 创建轨迹
let track = new emap.layers.EasyRouteplayer(routers, map, true, {
    rotating: true,
    totalTime:0  //总时间为0将按着routers中设置的时间
})

// 开始播放
track.play();

// 暂停
track.pause();

// 取消
track.cancel();

// 完成
track.finish();

绘制工具

// 初始化地图
const map = new emap.EasyMap("map")

// 获取默认图层
const layer = map.getLayer('default_vector')

// 创建绘制工具
const drawTool = new emap.EasyDrawTool({ mode: 'Point' }).addTo(map).disable()

// 绑定绘制完成事件
const handler = drawTool.on('drawend', function(param) {
    currentGeometry = param.geometry
    layer.addGeometry(currentGeometry)
});

// 开始绘制
drawTool.drawPointFeature()