美文网首页
react中使用openlayers第二篇(加载热力图)

react中使用openlayers第二篇(加载热力图)

作者: 黑白不过灰 | 来源:发表于2019-08-16 10:12 被阅读0次

既然有第一篇,那就要有第二篇嘛!

佛说要有光,世界便有了光

啊呸

是上帝说要有光,世界便有了光

好的,我们来到了第二篇,第二篇我们干啥呢?有了,我们来加载一个热点图

import React, { PureComponent } from 'react';
import { Map, View } from 'ol';
import { Tile, Heatmap } from 'ol/layer';
import { OSM, Vector } from 'ol/source';
import GeoJSON from 'ol/format/GeoJSON';
import { fromLonLat } from 'ol/proj';
import ScaleLine from 'ol/control/ScaleLine';
import ZoomSlider from 'ol/control/ZoomSlider';

const control = require('ol/control');

export default class Home extends PureComponent {
    // 生命周期函数时调用
    componentDidMount() {
        let map = new Map({
            // 设置挂载点为map
            target: 'map',
            // 设置图层
            layers: [
                new Tile({
                    source: new OSM()
                })
            ],
            // 设置地图的可视区域,center为中心点,zoom为缩放的层级
            view: new View({
                center: fromLonLat([114, 41]),
                zoom: 4
            }),
            //加载控件到地图容器中
            controls: control.defaults({
                // zoom: false,
                rotate: false,
                attribution: false
            }).extend([
                new ScaleLine(),
                new ZoomSlider()
            ])
        });

        //矢量图层 获取geojson数据
        var vector = new Vector({
            url: '../src/pages/maphot/test.geojson',
            format: new GeoJSON()
        });
        let heatMap = new Heatmap({
            source: vector,
            // 透明度
            // opacity: [0, 0.8], 
            // 模糊大小
            blur: 5,
            // 半径大小(以像素为单位,默认8)
            radius: 5,
            // 阴影像素大小,默认250
            // shadow:250,
            // 矢量图层的渲染模式:
            // image:矢量图层呈现为图像。性能出色,但是点符号和文本始末始终随着视图一起旋转,像素在缩放动画期间缩放
            // vector:矢量图层呈现为矢量。即使在动画期间也能获得最准确的渲染,但是性能降低
        });
        map.addLayer(heatMap);
    }
    render() {
        return (
            <div style={{ width: '100%', height: '100%' }}>
                <div id="map" style={{ width: '100%', height: "930px" }} />
                {/*  地图的挂载点,可以设置大小,控制地图的大小 */}
                {/* <div id="map" style={{ width: '1920px', height: "1080px" }} /> */}
            </div>
        );
    }
}

代码有了,注释也有了,哦,我知道了,还缺一个效果图

热力图效果图
至于说代码中使用的geojson的数据,额,这个,不知道怎么上传
https://links.jianshu.com/go?to=https%3A%2F%2Fearthquake.usgs.gov%2Fearthquakes%2Ffeed%2Fv1.0%2Fsummary%2Fall_month.geojson
嘻嘻嘻,这篇文章主要是参考大佬的https://www.jianshu.com/p/10f7c04eda17](https://www.jianshu.com/p/10f7c04eda17)
本人前端切图仔,希望可以和大家多多交流技术方面的知识

相关文章

网友评论

      本文标题:react中使用openlayers第二篇(加载热力图)

      本文链接:https://www.haomeiwen.com/subject/suffsctx.html