天地图开发指南

天地图开发指南

1 申请天地图key

1.1 注册账号

注册地址:https://uums.tianditu.gov.cn/register

1.2 申请开发者

登录后 ,申请开发者https://console.tianditu.gov.cn/api/register

1.3 创建应用

点击控制台,创建应用

在这里插入图片描述

1.4 天地图key

在这里插入图片描述

2.0 天地图api使用

2.1 创建第一个地图
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>

    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;"></div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序"
            },
            mounted() {
                var map = new T.Map('map', {
                    // projection: 'EPSG:900913', W84
                    // EPSG:4326 W84
                    projection: 'EPSG:4326'
                });
                var zoom = 18;
                map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom);
            }

        })
    </script>
</body>

</html>

创建的第一个地图实例

在这里插入图片描述

2.2 地图加载第一个图层
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>

    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;"></div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序"
            },
            mounted() {
                  var imageURL = "http://t0.tianditu.gov.cn/img_w/wmts?" +
                    "SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
                    "&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=天地图key";

                // 创建自定义图层对象
                  var lay = new T.TileLayer(imageURL,{minZoom:1,maxZoom:18})  ;
                  var config  = {layers:[lay]};
                //   初始化地图对象 

                var map = new T.Map('map', config);
                var zoom = 18;
                map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom);
                map.enableScrollWheelZoom();
            }

        })
    </script>
</body>

</html>

加载图层效果图

在这里插入图片描述

3 地图基本操作

3.1 地图放大缩小
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
      .btns{
           position: absolute;
           width: 200px;
           height: 200px;
           border: 1px solid red;
           top: 10;
           left: 10;
           z-index: 999;
      }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">
               
                <input type="button" value="放大 +" @click="ZoomUp"></input> <input type="button" value="缩小 -"
                    @click="ZoomDown"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 18

            },
            mounted() {

                this.map = new T.Map('map');
                this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                this.map.enableScrollWheelZoom();
            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                }
            },

        })
    </script>
</body>

</html>

实例:

在这里插入图片描述

3.2 移动地图位置并指定缩放精度
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 200px;
            height: 200px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="放大 +" @click="ZoomUp"></input> <input type="button" value="缩小 -"
                    @click="ZoomDown"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 18

            },
            mounted() {

                this.map = new T.Map('map');
                this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                this.map.enableScrollWheelZoom();
                setTimeout(() => {
                    // 将地图中心点,移动到指定位置,同时指定缩放精度
                    this.map.panTo(new T.LngLat(116.64899, 40.12948),12)
                }, 2000)
            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                }
            },

        })
    </script>
</body>

</html>
3.3 地图设置指定缩放等级
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 200px;
            height: 200px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="放大 +" @click="ZoomUp"></input> <input type="button" value="缩小 -"
                    @click="ZoomDown"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 18

            },
            mounted() {

                this.map = new T.Map('map');
                this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                this.map.enableScrollWheelZoom();
                setTimeout(() => {
                    // 设置地图的缩放等级
                    this.map.setZoom(14)
                }, 2000)
            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                }
            },

        })
    </script>
</body>

</html>
3.4 设置地图不能被拖拽,两秒后开启拖拽地图
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 200px;
            height: 200px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="放大 +" @click="ZoomUp"></input> <input type="button" value="缩小 -"
                    @click="ZoomDown"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 18

            },
            mounted() {

                this.map = new T.Map('map');
                this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                this.map.enableScrollWheelZoom();
                this.map.disableDrag();
                setTimeout(() => {
                    alert("地图可以拖拽");
                    // 设置地图的缩放等级
                   this.map.enableDrag();
                }, 2000)
            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                }
            },

        })
    </script>
</body>

</html>
3.5 获取地图的可视区域
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 200px;
            height: 200px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="放大 +" @click="ZoomUp"></input> <input type="button" value="缩小 -"
                    @click="ZoomDown"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 8

            },
            mounted() {

                this.initMap()

            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                },
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                    const bs = this.map.getBounds();  //获取可视区域
                    var bssw = bs.getSouthWest();   //可视区域左下角
                    var bsne = bs.getNorthEast();   //可视区域右上角
                    // 可视区域变化,缩放等级、屏显分辨率、中心点 lng 经度  lat 纬度
                    console.log("bssw", bssw)
                    console.log("bsne", bsne)
                }
            },

        })
    </script>
</body>

</html>

4 地图参数设置

4.1 设置地图中心点及缩放级别

根据指定的经度、纬度、缩放级别 设置地图中心点

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 500px;
            height: 200px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;
            
        }
        input{
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

              经度:<input type="text" v-model="lng" ></input> </br>
              纬度:<input type="text" v-model="lat" ></input></br>
              缩放级别:<input type="text" v-model="zoom" ></input></br>
              <input type="button" value="设置中心点"  @click="setCenterAndZoom"></input>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 8,
                lng:'116.64899',
                lat:'40.12948'

            },
            mounted() {

                this.initMap()

            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                },
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                    const bs = this.map.getBounds();  //获取可视区域
                    var bssw = bs.getSouthWest();   //可视区域左下角
                    var bsne = bs.getNorthEast();   //可视区域右上角
                    // 可视区域变化,缩放等级、屏显分辨率、中心点 lng 经度  lat 纬度
                    console.log("bssw", bssw)
                    console.log("bsne", bsne)
                },
                setCenterAndZoom(){
                   this.map.centerAndZoom(new T.LngLat(this.lng, this.lat), this.zoom);
                }
            },

        })
    </script>
</body>

</html>

实例效果图:

在这里插入图片描述

4.2 是否允许地图双击鼠标放大
4.3 是否允许鼠标滚轮放大缩小地图
4.4 是否允许鼠标拖拽地图
4.5 是否允许键盘操作地图

4.2-4.5 代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 500px;
            height: 800px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                经度:<input type="text" v-model="lng"></input> </br>
                纬度:<input type="text" v-model="lat"></input></br>
                缩放级别:<input type="text" v-model="zoom"></input></br>
                <input type="button" value="设置中心点" @click="setCenterAndZoom"></input></br>
                <input type="button" value="开启双击放大地图" @click="enableDoubleClickZoom"></input></br>
                <input type="button" value="禁止双击放大地图" @click="disableDoubleClickZoom"></input></br>
                <input type="button" value="允许鼠标滚轮缩放地图" @click="enableScrollWheelZoom"></input></br>
                <input type="button" value="禁止鼠标滚轮缩放地图" @click="disableScrollWheelZoom"></input></br>
                <input type="button" value="允许鼠标惯性拖拽" @click="enableInertia"></input></br>
                <input type="button" value="禁止鼠标惯性拖拽" @click="disableInertia"></input></br>
                <input type="button" value="允许键盘操作地图" @click="enableKeyboard"></input></br>
                <input type="button" value="禁止键盘操作地图" @click="disableKeyboard"></input></br>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 8,
                lng: '116.64899',
                lat: '40.12948'

            },
            mounted() {

                this.initMap()

            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                },
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                    const bs = this.map.getBounds();  //获取可视区域
                    var bssw = bs.getSouthWest();   //可视区域左下角
                    var bsne = bs.getNorthEast();   //可视区域右上角
                    // 可视区域变化,缩放等级、屏显分辨率、中心点 lng 经度  lat 纬度
                    console.log("bssw", bssw)
                    console.log("bsne", bsne)
                },
                setCenterAndZoom() {
                    this.map.centerAndZoom(new T.LngLat(this.lng, this.lat), this.zoom);
                }, enableDoubleClickZoom() {
                    this.map.enableDoubleClickZoom()
                },
                disableDoubleClickZoom() {
                    this.map.disableDoubleClickZoom()
                },
                enableScrollWheelZoom() {
                    this.map.enableScrollWheelZoom()
                },
                disableScrollWheelZoom() {
                    this.map.disableScrollWheelZoom()
                },
                enableInertia() {
                    this.map.enableInertia()
                },
                disableInertia() {
                    this.map.disableInertia()
                },
                enableKeyboard() {
                    this.map.enableKeyboard()
                },
                disableKeyboard() {
                    this.map.disableKeyboard()
                }

            }

        })
    </script>
</body>

</html>

效果:

在这里插入图片描述

5 地图信息获取

5.1 获取地图中心点位置
5.2 获取当前缩放级别

5.1-5.2 代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 500px;
            height: 800px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                经度:<input type="text" v-model="lng"></input> </br>
                纬度:<input type="text" v-model="lat"></input></br>
                缩放级别:<input type="text" v-model="zoom"></input></br>
                <input type="button" value="设置中心点" @click="setCenterAndZoom"></input></br>
                <input type="button" value="开启双击放大地图" @click="enableDoubleClickZoom"></input></br>
                <input type="button" value="禁止双击放大地图" @click="disableDoubleClickZoom"></input></br>
                <input type="button" value="允许鼠标滚轮缩放地图" @click="enableScrollWheelZoom"></input></br>
                <input type="button" value="禁止鼠标滚轮缩放地图" @click="disableScrollWheelZoom"></input></br>
                <input type="button" value="允许鼠标惯性拖拽" @click="enableInertia"></input></br>
                <input type="button" value="禁止鼠标惯性拖拽" @click="disableInertia"></input></br>
                <input type="button" value="允许键盘操作地图" @click="enableKeyboard"></input></br>
                <input type="button" value="禁止键盘操作地图" @click="disableKeyboard"></input></br>
                <input type="button" value="获取地图中心点坐标" @click="getCenter"></input></br>
                <input type="button" value="获取当前地图的缩放级别" @click="getZoom"></input></br>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 8,
                lng: '116.64899',
                lat: '40.12948'

            },
            mounted() {

                this.initMap()

            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                },
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                    const bs = this.map.getBounds();  //获取可视区域
                    var bssw = bs.getSouthWest();   //可视区域左下角
                    var bsne = bs.getNorthEast();   //可视区域右上角
                    // 可视区域变化,缩放等级、屏显分辨率、中心点 lng 经度  lat 纬度
                    console.log("bssw", bssw)
                    console.log("bsne", bsne)
                },
                setCenterAndZoom() {
                    this.map.centerAndZoom(new T.LngLat(this.lng, this.lat), this.zoom);
                }, enableDoubleClickZoom() {
                    this.map.enableDoubleClickZoom()
                },
                disableDoubleClickZoom() {
                    this.map.disableDoubleClickZoom()
                },
                enableScrollWheelZoom() {
                    this.map.enableScrollWheelZoom()
                },
                disableScrollWheelZoom() {
                    this.map.disableScrollWheelZoom()
                },
                enableInertia() {
                    this.map.enableInertia()
                },
                disableInertia() {
                    this.map.disableInertia()
                },
                enableKeyboard() {
                    this.map.enableKeyboard()
                },
                disableKeyboard() {
                    this.map.disableKeyboard()
                },
                getCenter() {
                    const c = this.map.getCenter()
                    alert(`经度 ${c.getLng()}  纬度:${c.getLat()}`)
                },
                getZoom(){
                   alert(`当前地图缩放级别为:${this.map.getZoom()}`)   
                }

            }

        })
    </script>
</body>

</html>

在这里插入图片描述

5.3 获取当前可视范围坐标

参见3.5 示例代码和效果

6 自定义图层

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>

    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;"></div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序"
            },
            mounted() {
                  var imageURL = "http://t0.tianditu.gov.cn/img_w/wmts?" +
                    "SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles" +
                    "&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=天地图key";

                // 创建自定义图层对象
                  var lay = new T.TileLayer(imageURL,{minZoom:1,maxZoom:18})  ;
                  var config  = {layers:[lay]};
                //   初始化地图对象 

                var map = new T.Map('map', config);
                var zoom = 18;
                map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom);
                map.enableScrollWheelZoom();
            }

        })
    </script>
</body>

</html>

7 叠加其他的WMS服务图层

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>

    <link rel="stylesheet" href="https://at.alicdn.com/t/font_2298427_iffy7zrfgcf.css" type="text/css">
    </link>

    <style>
        .btns {
            position: absolute;
            width: 500px;
            height: 800px;
            border: 1px solid red;
            top: 10;
            left: 10;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                经度:<input type="text" v-model="lng"></input> </br>
                纬度:<input type="text" v-model="lat"></input></br>
                缩放级别:<input type="text" v-model="zoom"></input></br>
                <input type="button" value="设置中心点" @click="setCenterAndZoom"></input></br>
                <input type="button" value="开启双击放大地图" @click="enableDoubleClickZoom"></input></br>
                <input type="button" value="禁止双击放大地图" @click="disableDoubleClickZoom"></input></br>
                <input type="button" value="允许鼠标滚轮缩放地图" @click="enableScrollWheelZoom"></input></br>
                <input type="button" value="禁止鼠标滚轮缩放地图" @click="disableScrollWheelZoom"></input></br>
                <input type="button" value="允许鼠标惯性拖拽" @click="enableInertia"></input></br>
                <input type="button" value="禁止鼠标惯性拖拽" @click="disableInertia"></input></br>
                <input type="button" value="允许键盘操作地图" @click="enableKeyboard"></input></br>
                <input type="button" value="禁止键盘操作地图" @click="disableKeyboard"></input></br>
                <input type="button" value="获取地图中心点坐标" @click="getCenter"></input></br>
                <input type="button" value="获取当前地图的缩放级别" @click="getZoom"></input></br>
                <input type="button" value="叠加WMS 服务图层" @click="addWmsLayer('topp:states','http://localhost:8080/geoserver/topp/wms')"></input></br>
                <input type="button" value="删除wms 服务图层" @click="delWmsLayer"></input></br>
            </div>
        </div>


    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: '',
                zoom: 8,
                lng: '120.154',
                lat: '30.274',
                wmsLayer: null


            },
            mounted() {

                this.initMap()

            },
            methods: {
                ZoomUp() {
                    // 放大一级地图
                    this.map.zoomIn()
                },
                ZoomDown() {
                    // 缩小一级地图
                    this.map.zoomOut()
                },
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                    const bs = this.map.getBounds();  //获取可视区域
                    var bssw = bs.getSouthWest();   //可视区域左下角
                    var bsne = bs.getNorthEast();   //可视区域右上角
                    // 可视区域变化,缩放等级、屏显分辨率、中心点 lng 经度  lat 纬度
                    console.log("bssw", bssw)
                    console.log("bsne", bsne)
                },
                setCenterAndZoom() {
                    this.map.centerAndZoom(new T.LngLat(this.lng, this.lat), this.zoom);
                }, enableDoubleClickZoom() {
                    this.map.enableDoubleClickZoom()
                },
                disableDoubleClickZoom() {
                    this.map.disableDoubleClickZoom()
                },
                enableScrollWheelZoom() {
                    this.map.enableScrollWheelZoom()
                },
                disableScrollWheelZoom() {
                    this.map.disableScrollWheelZoom()
                },
                enableInertia() {
                    this.map.enableInertia()
                },
                disableInertia() {
                    this.map.disableInertia()
                },
                enableKeyboard() {
                    this.map.enableKeyboard()
                },
                disableKeyboard() {
                    this.map.disableKeyboard()
                },
                getCenter() {
                    const c = this.map.getCenter()
                    alert(`经度 ${c.getLng()}  纬度:${c.getLat()}`)
                },
                getZoom() {
                    alert(`当前地图缩放级别为:${this.map.getZoom()}`)
                },
                addWmsLayer(layers, url) {
                    const config = {
                        version: "1.1.0",	//请求服务的版本
                        request:'GetMap',
                        layers: layers,
                        transparent: true,	//输出图像背景是否透明
                        styles: "",			//每个请求图层的用","分隔的描述样式
                        format: "image/png"	//输出图像的类型
                    }
                    this.getWms(url, config)
                },
                getWms(url, config) {
                    if (this.wmsLayer) {
                        this.map.removeLayer(this.wmsLayer)
                    }
                    this.wmsLayer = new T.TileLayer.WMS(url, config)
                    this.map.addLayer(this.wmsLayer)
                },
                delWmsLayer() {
                    this.map.removeLayer(this.wmsLayer)
                }

            }

        })
    </script>
</body>

</html>

8 添加基本控件

8.1 添加缩放控件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件"></input></br>
                <input type="button" value="添加鹰眼控件"></input></br>
                <input type="button" value="添加地图版权控件"></input></br>
                <input type="button" value="添加地图类型控件"></input></br>
                <input type="button" value="添加符号类控件"></input></br>

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: ''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.control) {
                        return
                    }
                    this.control = new T.Control.Zoom();
                    this.map.addControl(this.control)
                    this.control.setPosition(T_ANCHOR_TOP_LEFT);
                }
            }

        })
    </script>
</body>

</html>
8.2 添加比例尺
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件" @click="addScaleControl"></input></br>
                <input type="button" value="添加鹰眼控件"></input></br>
                <input type="button" value="添加地图版权控件"></input></br>
                <input type="button" value="添加地图类型控件"></input></br>
                <input type="button" value="添加符号类控件"></input></br>

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: '',
                zoomControl:'',
                scaleControl:''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.zoomControl) {
                        return
                    }
                    this.zoomControl = new T.Control.Zoom();
                    this.map.addControl(this.zoomControl)
                    this.zoomControl.setPosition(T_ANCHOR_TOP_LEFT);
                },
                addScaleControl(){
                    if (this.scaleControl) {
                        return
                    }
                    this.scaleControl = new T.Control.Scale();
                    this.map.addControl(this.scaleControl)
                  
                }
            }

        })
    </script>
</body>

</html>
8.3 添加鹰眼控件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件" @click="addScaleControl"></input></br>
                <input type="button" value="添加鹰眼控件" @click="addOverViewMapControl"></input></br>
                <input type="button" value="添加地图版权控件"></input></br>
                <input type="button" value="添加地图类型控件"></input></br>
                <input type="button" value="添加符号类控件"></input></br>

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: '',
                zoomControl:'',
                scaleControl:'',
                overViewMapControl:''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.zoomControl) {
                        return
                    }
                    this.zoomControl = new T.Control.Zoom();
                    this.map.addControl(this.zoomControl)
                    this.zoomControl.setPosition(T_ANCHOR_TOP_LEFT);
                },
                addScaleControl(){
                    if (this.scaleControl) {
                        return
                    }
                    this.scaleControl = new T.Control.Scale();
                    this.map.addControl(this.scaleControl)
                  
                },
                addOverViewMapControl(){
                    if (this.overViewMapControl) {
                        return
                    }
                    this.overViewMapControl = new T.Control.OverviewMap({
                        isOpen:true,
                        size:new T.Point(200,200)
                        // 设置小地图,鹰眼的初始化大小
                    });
                    this.map.addControl(this.overViewMapControl)
                  
                }
            }

        })
    </script>
</body>

</html>


8.4 添加版权信息
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件" @click="addScaleControl"></input></br>
                <input type="button" value="添加鹰眼控件" @click="addOverViewMapControl"></input></br>
                <input type="button" value="添加地图版权控件" @click="addcopyControl"></input></br>
                <input type="button" value="添加地图类型控件"></input></br>
                <input type="button" value="添加符号类控件"></input></br>

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: '',
                zoomControl:'',
                scaleControl:'',
                overViewMapControl:'',
                copyControl:''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.zoomControl) {
                        return
                    }
                    this.zoomControl = new T.Control.Zoom();
                    this.map.addControl(this.zoomControl)
                    this.zoomControl.setPosition(T_ANCHOR_TOP_LEFT);
                },
                addScaleControl(){
                    if (this.scaleControl) {
                        return
                    }
                    this.scaleControl = new T.Control.Scale();
                    this.map.addControl(this.scaleControl)
                  
                },
                addOverViewMapControl(){
                    if (this.overViewMapControl) {
                        return
                    }
                    this.overViewMapControl = new T.Control.OverviewMap({
                        isOpen:true,
                        size:new T.Point(200,200)
                        // 设置小地图,鹰眼的初始化大小
                    });
                    this.map.addControl(this.overViewMapControl)
                  
                },
                addcopyControl(){
                    if (this.copyControl) {
                        return
                    }
                    this.copyControl = new T.Control.Copyright({
                        position: T_ANCHOR_TOP_LEFT,
                        // 初始化地图版权的位置
                    });
                    this.map.addControl(this.copyControl)

                    // 返回地图的可视区域
                    const bs = this.map.getBounds()
                    // 添加版权信息
                    this.copyControl.addCopyright({
                        id:10,
                        content:`<a href="http://wwww.baidu.com">这里是自定义版权控件的位置,可以加超链接</a>`,
                        bounds:bs
                    })
                  
                }
            }

        })
    </script>
</body>

</html>
8.5 加载地图类型控件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件" @click="addScaleControl"></input></br>
                <input type="button" value="添加鹰眼控件" @click="addOverViewMapControl"></input></br>
                <input type="button" value="添加地图版权控件" @click="addcopyControl"></input></br>
                <input type="button" value="添加地图类型控件" @click="addMapType"></input></br>
              

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: '',
                zoomControl: '',
                scaleControl: '',
                overViewMapControl: '',
                copyControl: '',
                mapTypeControl: '',
                militarySymbols: ''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.zoomControl) {
                        return
                    }
                    this.zoomControl = new T.Control.Zoom();
                    this.map.addControl(this.zoomControl)
                    this.zoomControl.setPosition(T_ANCHOR_TOP_LEFT);
                },
                addScaleControl() {
                    if (this.scaleControl) {
                        return
                    }
                    this.scaleControl = new T.Control.Scale();
                    this.map.addControl(this.scaleControl)

                },
                addOverViewMapControl() {
                    if (this.overViewMapControl) {
                        return
                    }
                    this.overViewMapControl = new T.Control.OverviewMap({
                        isOpen: true,
                        size: new T.Point(200, 200)
                        // 设置小地图,鹰眼的初始化大小
                    });
                    this.map.addControl(this.overViewMapControl)

                },
                addcopyControl() {
                    if (this.copyControl) {
                        return
                    }
                    this.copyControl = new T.Control.Copyright({
                        position: T_ANCHOR_TOP_LEFT
                        // 初始化地图版权的位置
                    });
                    this.map.addControl(this.copyControl)

                    // 返回地图的可视区域
                    const bs = this.map.getBounds()
                    // 添加版权信息
                    this.copyControl.addCopyright({
                        id: 10,
                        content: `<a href="http://wwww.baidu.com">这里是自定义版权控件的位置,可以加超链接</a>`,
                        bounds: bs
                    })

                },
                addMapType() {
                    if (this.mapTypeControl) {
                        return
                    }
                    this.mapTypeControl = new T.Control.MapType()
                    this.map.addControl(this.mapTypeControl)
                }
            }

        })
    </script>
</body>

</html>


8.6 添加符号控件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">

                <input type="button" value="添加缩放控件" @click="addZoomControl"></input></br>
                <input type="button" value="添加比例尺控件" @click="addScaleControl"></input></br>
                <input type="button" value="添加鹰眼控件" @click="addOverViewMapControl"></input></br>
                <input type="button" value="添加地图版权控件" @click="addcopyControl"></input></br>
                <input type="button" value="添加地图类型控件" @click="addMapType"></input></br>
                <input type="button" value="添加符号类控件 " @click="addMilitarySymbols"></input></br>

            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                control: '',
                zoomControl: '',
                scaleControl: '',
                overViewMapControl: '',
                copyControl: '',
                mapTypeControl: '',
                militarySymbols: ''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addZoomControl() {
                    if (this.zoomControl) {
                        return
                    }
                    this.zoomControl = new T.Control.Zoom();
                    this.map.addControl(this.zoomControl)
                    this.zoomControl.setPosition(T_ANCHOR_TOP_LEFT);
                },
                addScaleControl() {
                    if (this.scaleControl) {
                        return
                    }
                    this.scaleControl = new T.Control.Scale();
                    this.map.addControl(this.scaleControl)

                },
                addOverViewMapControl() {
                    if (this.overViewMapControl) {
                        return
                    }
                    this.overViewMapControl = new T.Control.OverviewMap({
                        isOpen: true,
                        size: new T.Point(200, 200)
                        // 设置小地图,鹰眼的初始化大小
                    });
                    this.map.addControl(this.overViewMapControl)

                },
                addcopyControl() {
                    if (this.copyControl) {
                        return
                    }
                    this.copyControl = new T.Control.Copyright({
                        position: T_ANCHOR_TOP_LEFT
                        // 初始化地图版权的位置
                    });
                    this.map.addControl(this.copyControl)

                    // 返回地图的可视区域
                    const bs = this.map.getBounds()
                    // 添加版权信息
                    this.copyControl.addCopyright({
                        id: 10,
                        content: `<a href="http://wwww.baidu.com">这里是自定义版权控件的位置,可以加超链接</a>`,
                        bounds: bs
                    })

                },
                addMapType() {
                    if (this.mapTypeControl) {
                        return
                    }
                    this.mapTypeControl = new T.Control.MapType()
                    this.map.addControl(this.mapTypeControl)
                },
                addMilitarySymbols() {
                    // if (this.militarySymbols) {
                    //     return
                    // }
                    //允许鼠标滚轮缩放地图
                    this.map.enableScrollWheelZoom();
                    const militarySymbols = new T.Control.militarySymbols({
                        position: T_ANCHOR_TOP_LEFT
                        // 初始化符号位置
                    })
                    this.map.addControl(militarySymbols)
                }
            }

        })
    </script>
</body>

</html>

9 地图右键菜单

9.1 简单添加右键菜单
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">
                <input type="button" value="添加右键菜单" @click="addMenu"></input></br>
       


            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                menus:''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addMenu(){
                    this.menus = new T.ContextMenu({
                        width:50
                    })
                    const menu1 = new T.MenuItem("放大",this.zoomIn)
                    const menu2 = new T.MenuItem("缩小",this.zoomOut)
                    this.menus.addItem(menu1)
                    this.menus.addItem(menu2)
                   this.map.addContextMenu(this.menus)

                },
                zoomIn(){
                    this.map.zoomIn()
                },
                zoomOut(){
                    this.map.zoomOut()
                }

            }

        })
    </script>
</body>

</html>
9.2 添加带有分割线的右键菜单
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">
                <input type="button" value="添加右键菜单" @click="addMenu"></input></br>
       


            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                menus:''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addMenu(){
                    this.menus = new T.ContextMenu({
                        width:70
                    })
                    const menu1 = new T.MenuItem("放大",this.zoomIn)
                    const menu2 = new T.MenuItem("缩小",this.zoomOut)
                    const menu3 = new T.MenuItem("放大最大",this.setZoom)
                    const menu4 = new T.MenuItem("查看全国",this.setTotal)
                    this.menus.addItem(menu1)
                    this.menus.addItem(menu2)
                    this.menus.addSeparator()
                    this.menus.addItem(menu3)
                    this.menus.addItem(menu4)
                   this.map.addContextMenu(this.menus)

                },
                zoomIn(){
                    this.map.zoomIn()
                },
                zoomOut(){
                    this.map.zoomOut()
                },
                setZoom(){
                    this.map.setZoom(18)
                },
                setTotal(){
                    this.map.setZoom(4)
                }

            }

        })
    </script>
</body>

</html>
9.3 获取右键菜单的坐标
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>天地图</title>
    <script type="text/javascript"
        src="http://api.tianditu.gov.cn/api?v=4.0&tk=天地图key"></script>
    <script src="./js/vue-min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;

        }

        .btns {
            position: absolute;
            width: 300px;
            height: 200px;
            border: 1px solid red;
            top: 10px;
            right: 10px;
            z-index: 999;

        }

        input {
            width: 150px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div id="map" style="position:absolute;width:100%;height:100%;">
            <div class="btns">
                <input type="button" value="添加右键菜单" @click="addMenu"></input></br>



            </div>
        </div>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: "这是第一个vue程序",
                map: null,
                zoom: 12,
                menus: ''
            },
            mounted() {
                this.initMap()
            },
            methods: {
                initMap() {
                    this.map = new T.Map('map');
                    this.map.centerAndZoom(new T.LngLat(116.40769, 39.89945), this.zoom);
                    this.map.enableScrollWheelZoom();
                },
                addMenu() {
                    this.menus = new T.ContextMenu({
                        width: 100
                    })
                    const menu1 = new T.MenuItem("放大", this.zoomIn)
                    const menu2 = new T.MenuItem("缩小", this.zoomOut)
                    const menu3 = new T.MenuItem("放大最大", this.setZoom)
                    const menu4 = new T.MenuItem("查看全国", this.setTotal)
                    const menu5 = new T.MenuItem("右键获取坐标", this.LngLat)
                    this.menus.addItem(menu1)
                    this.menus.addItem(menu2)
                    this.menus.addSeparator()
                    this.menus.addItem(menu3)
                    this.menus.addItem(menu4)
                    this.menus.addSeparator()
                    this.menus.addItem(menu5)
                    this.map.addContextMenu(this.menus)

                },
                zoomIn() {
                    this.map.zoomIn()
                },
                zoomOut() {
                    this.map.zoomOut()
                },
                setZoom() {
                    this.map.setZoom(18)
                },
                setTotal() {
                    this.map.setZoom(4)
                },
                LngLat(lnglat) {
                    alert(lnglat.getLng() + "," + lnglat.getLat());
                }

            }

        })
    </script>
</body>

</html>


  • 19
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
DirectShow 是由微软公司开发的一套多媒体应用程序编程接口(API),旨在为开发人员提供一种简便的方法来创建和处理多媒体的应用程序。DirectShow 提供了一整套的组件和过滤器,可以完成多种不同的功能,如音频和视频的捕捉、播放、编辑、编码和解码等。 DirectShow 开发指南是指为开发人员提供一份详细的文档或指南,以帮助他们成功地使用 DirectShow 进行应用程序开发。该指南通常包括以下内容: 1. DirectShow 的概述:指南将介绍 DirectShow 的基本概念和架构,包括组件模型、过滤器和数据流等内容。 2. 开发环境的配置:指南将提供如何配置开发环境,包括安装所需的开发工具和库文件,并设置项目属性等。 3. DirectShow 的基本使用:指南将教授如何创建一个基本的 DirectShow 应用程序,如图形用户界面(GUI)的设计、多媒体设备的选择和初始化等。 4. 多媒体数据的处理:指南将介绍如何使用 DirectShow 的组件和过滤器来处理多媒体数据,如音频和视频的捕捉、编辑、编码和解码等。 5. 故障排除和调试:指南将提供如何排除和解决开发过程中可能遇到的问题,并介绍一些常见的调试技巧和工具。 通过学习 DirectShow 开发指南开发人员可以获得使用 DirectShow 开发应用程序所需的基础知识和技能。他们可以使用这些知识和技能来创建自己的多媒体应用程序,以满足用户的需求,并从 DirectShow 提供的强大功能中受益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值