vue3 高德地图 热力图层

 我们在开发中,很有可能会用到高德地图,那么该如何设置呢

申请key的方法

1.使用npm安装  @amap/amap-jsapi-loader

npm i @amap/amap-jsapi-loader --save

2.在组见中引入

import AMapLoader from "@amap/amap-jsapi-loader";

3.在新版本的,key需要配合密钥一起使用

window._AMapSecurityConfig = {

    securityJsCode: "申请的密钥",

};

4.创建地图和Loca实例

var map = new AMap.Map('map', {
  center: [80.601, 40.32],
  zoom: 12,
  viewMode: '3D',  // 地图设置成 3D 模式,否则图层会失去高度信息
});

// 创建 Loca 实例
var loca = new Loca.Container({
  map: map
});

5.创建热力图层

 //   热力图层
    var geo = new Loca.GeoJSONSource({
            url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/tsing.json',
        });
      

        // 热力图
        var heatmap = new Loca.HeatMapLayer({
            // loca,
            zIndex: 10,
            opacity: 1,
            visible: true,
            zooms: [2, 22],//设置图层可见的缩放范围
        });
  //    热力图层样式
        heatmap.setSource(geo, {
            radius: 9000,
            unit: 'meter',
            height: 8000,
            difference: true,
            gradient: {
                1: '#FF4C2F',
                0.8: '#FAA53F',
                0.6: '#FFF100',
                0.5: '#7DF675',
                0.4: '#5CE182',
                0.2: '#29CF6F',
            },
            value: function (index, feature) {
                return feature.properties.count;
            },
            opacity: [0, 1],
            heightBezier: [1, 3,1,4]
            // heightBezier: [0, 0.53, 0.37, 0.98]
        });

        loca.add(heatmap)
        map.on('click', () => {
            heatmap.addAnimate({
                key: 'radius',
                value: [0, 1],
                random: true,
                transform: 1000,
                delay: 6000,
                easing: 'BounceOut' //https://redmed.github.io/chito/example/easing.html
            });
        });

完整实例

<script setup>
import { onMounted, onUnmounted } from "vue";
import AMapLoader from "@amap/amap-jsapi-loader";
window._AMapSecurityConfig = {
    securityJsCode: "申请的密钥",
};
let map = null;


function initAMap() {
    AMapLoader.load({
        key: "申请的key", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.Scale"], //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
        Loca: {
            version: '2.0',
        }
    }).then((AMap) => {
        map = new AMap.Map('container');
        var map = new AMap.Map('container', {
            // center: [116.397428, 39.90923],
            zoom: 5,
            viewMode: '3D',  // 地图设置成 3D 模式,否则图层会失去高度信息
        });
        // 创建 Loca 实例
        var loca = new Loca.Container({
            map: map
        });
        console.log('Loca', loca)


    //   热力图层
    var geo = new Loca.GeoJSONSource({
            url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/tsing.json',
        });
      

        // 热力图
        var heatmap = new Loca.HeatMapLayer({
            // loca,
            zIndex: 10,
            opacity: 1,
            visible: true,
            zooms: [2, 22],//设置图层可见的缩放范围
        });
        //    热力图层样式
        heatmap.setSource(geo, {
            radius: 9000,
            unit: 'meter',
            height: 8000,
            difference: true,
            gradient: {
                1: '#FF4C2F',
                0.8: '#FAA53F',
                0.6: '#FFF100',
                0.5: '#7DF675',
                0.4: '#5CE182',
                0.2: '#29CF6F',
            },
            value: function (index, feature) {
                return feature.properties.count;
            },
            opacity: [0, 1],
            heightBezier: [1, 3,1,4]
            // heightBezier: [0, 0.53, 0.37, 0.98]
        });

        loca.add(heatmap)
        map.on('click', () => {
            heatmap.addAnimate({
                key: 'radius',
                value: [0, 1],
                random: true,
                transform: 1000,
                delay: 6000,
                easing: 'BounceOut' //https://redmed.github.io/chito/example/easing.html
            });
        });


    })
        .catch((e) => {
            console.log(e);
        });
}
onMounted(() => {
    initAMap()

});

onUnmounted(() => {
    map?.destroy();
});
</script>

<template>
    <div id="container" style="height: 750px"></div>
</template>

<style scoped>
#container {
    width: 100%;
    height: 750px;
}
</style>

注:如果加载不出Loca有可能是因为,版本不正确,确保Loca的版本正确

 不喜勿喷,喜欢的话加点个赞吧~欢迎大家交流

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js是一个流行的JavaScript框架,而高德地图是一个提供地图和位置服务的平台。要在Vue.js中使用高德地图热力,你可以按照以下步骤进行操作: 1. 在你的Vue项目中安装高德地图的JavaScript API库。你可以使用npm或yarn来安装,具体命令可以参考高德地图官方文档。 2. 创建一个Vue组件,用于显示地图热力。你可以在组件中使用高德地图提供的JavaScript API来初始化地图,并添加热力层。 3. 在组件的生命周期钩子函数中,例如`mounted`,使用高德地图API的热力相关方法来设置热力的数据和样式。 以下是一个简单的示例代码: ```vue <template> <div> <div id="map"></div> </div> </template> <script> export default { mounted() { // 初始化地图 const map = new AMap.Map('map', { zoom: 13, center: [116.39, 39.9], }); // 创建热力实例 const heatmap = new AMap.Heatmap(map, { radius: 25, // 热力点半径 }); // 设置热力数据 heatmap.setDataSet({ data: [...], // 热力数据数组 max: 100, // 热力权重最大值 }); }, }; </script> <style> #map { width: 100%; height: 400px; } </style> ``` 在这个示例中,我们在组件的`mounted`函数中初始化了一个地图实例,并创建了一个热力实例。然后,我们使用`setDataSet`方法设置了热力的数据和样式。 注意:以上只是一个简单的示例,你可能需要根据你的具体需求进行更多的配置和处理,例如根据地图的变化更新热力数据等。 希望对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值