腾讯地图

2020-08-08  本文已影响0人  小北呀_

下面包括的方法有:地图展示、多边形地图展示、地图点击事件、动态改变缩放、坐标逆解析地址用jsonp。

<template>
    <div>
        map ......
        <div id='container'></div>
    </div>
</template>
<script>
// 注意:用的时候 this.$jsonp! 不要问我也不知道
import Vue from 'vue'
import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)
export default {
    data() {
        return {

        }
    },
    mounted() {
        // 3d地图显示
        this.get3D()

        // 多边形地图展示
        // this.getPolygon()
    },
    methods:{
        /* 
            3d地图显示
        */
        get3D() {
            //定义地图中心点坐标
            //   {"latitude":40.03658,"longitude":116.37239,"text":"海淀区清河康健宝盛广场(宝盛路南50米)"}
            var center = new TMap.LatLng(40.03658, 116.37239)
            //定义map变量,调用 TMap.Map() 构造函数创建地图
            var map = new TMap.Map(document.getElementById('container'), {
                center: center,//设置地图中心点坐标
                zoom: 17.2,   //设置地图缩放级别
                pitch: 43.5,  //设置俯仰角
                rotation: 45    //设置地图旋转角度
            });


            // 点击事件
            map.on("click",this.clickMap)

        },
        /* 动态改变缩放 */
        changeZoom() {
            setTimeout(()=>{
                map.zoomTo(10)
            },3000)
        },
        /* 点击事件 */
        clickMap(val){
            console.log(val,'val.....')

            this.lat = val.latLng.lat
            this.lng = val.latLng.lng
            // 坐标逆解析成地址
            this.getAdrress()

            /* 通过off方法解绑点击事件 */
            // map.off("click",this.clickMap);
        },
        getAdrress() {
            // json 存在跨域问题   ,所以选择用了json
            // npm install --save vue-jsonp   下载jsonp
             let url ='https://apis.map.qq.com/ws/geocoder/v1/?output=jsonp'
            this.$jsonp(url,{
              key: 'HEXBZ-HLJ65-SXKIB-Q7KLK-5ETPF-ZPBWI',
              location: this.lat+ ',' + this.lng
            })
            .then(json => {
                // console.log(json,'1111')
                // 点击小区的某栋楼,只能具体到小区名称,具体不到点的是那栋楼
                console.log(json.result.formatted_addresses,'9999') //附近街道地址信息
            })
            .catch(err => {
                    console.log(err)
            })
        },
        /* 多边形地图展示 */
        getPolygon() {
            var map = new TMap.Map('container', {
                center: new TMap.LatLng(40.038515, 116.272185),//地图显示中心点
                // zoom:16, //缩放级别
                // pitch: 43.5,  //设置俯仰角
                zoom: 17.2,   //设置地图缩放级别
                pitch: 43.5,  //设置俯仰角
                rotation: 45    //设置地图旋转角度
            });
            var path = [
                [40.03854009824492,116.26174449920654],
                [40.03854009824492,116.26260280609131],
                [40.03870438053774,116.26341819763184],
                [40.038342958971086,116.26384735107422],
                [40.037882965115706,116.26423358917236],
                [40.03768582394209,116.2642765045166],
                [40.037455825185845,116.26311779022217],
                [40.037258682777356,116.26328945159912],
                [40.03719296851454,116.26243114471436],
                [40.037488682198514,116.26165866851807],
                [40.03791582192258,116.26208782196045],
                [40.038178675807515,116.26140117645264],
                [40.03847438521698,116.26140117645264]
            ]
            //转为LatLng数组
            path = path.map(p => {
                return new TMap.LatLng(p[0], p[1]);
            });
            
            //初始化polygon
            var polygon = new TMap.MultiPolygon({
                id: 'polygon-layer', //图层id
                map: map, //设置多边形图层显示到哪个地图实例中
                //多边形样式
                styles: {
                    'polygon': new TMap.ExtrudablePolygonStyle({
                        'color': 'rgba(0,125,255,0.7)', //面填充色
                        'showBorder':false, //是否显示拔起面的边线
                        'extrudeHeight':30, //多边形拔起高度
                        'borderColor': '#999' //边线颜色
                    })
                },
                //多边形数据
                geometries: [
                    {
                        'id': 'p1', //该多边形在图层中的唯一标识(删除、更新数据时需要)
                        'styleId': 'polygon', //绑定样式名
                        'paths': path, //多边形轮廓
                    }
                ]
            });
        }

    }
}
</script>
<style scoped>
.container{
    width: 600px;
    height: 600px;
    /* width: 100vw; */
    /* height: 100vh; */
}
</style>
    <!-- 腾讯地图 -->
    <script src="https://map.qq.com/api/gljs?v=1.exp&key=HEXBZ-HLJ65-SXKIB-Q7KLK-5ETPF-ZPBWI"></script>
上一篇 下一篇

猜你喜欢

热点阅读