天地图测量面积_世界地图拼图技巧1000块[通俗易懂]

天地图测量面积_世界地图拼图技巧1000块[通俗易懂]其中jquery.min.js需要引用本地或者线上,如

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文


项目中提出在地图上绘制面并获取面积,如何实现?

在天地图官网的JavaScript API 中,链接如下:

天地图JavaScript API

能看到Polygon并没有提供测量面的工具,这里需要使用polygonTool类。

一、初始化地图

map = new T.Map('mapDiv',);

// var lnglat = new T.LngLat(jshjData[0].lng,jshjData[0].lat)
var lnglat = new T.LngLat(115.79251,28.93511)
// var lnglat = new T.LngLat(80.41150304634095,80.44935513895808)

map.centerAndZoom(lnglat,17);



//隐藏天地图Logo
document.getElementsByClassName("tdt-control-copyright tdt-control")[0].style.display = 'none';

二、创建polygonTool

        //开始绘制
        function startDraw(isToolArea) {
            if (handler){
                handler.close();
            }
            if (isToolArea){
                var config = {
                    showLabel: true,
                    color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5
                };
                //创建标注工具对象
                handler = new T.PolygonTool(map, config);
            }else {
                handler = new T.PolygonTool(map);

            }
            handler.open();

            //长按结束事件
            handler.addEventListener('draw', ()=>{
                dataList = handler.getPolygons()[0].ht[0];
                //绘制完成后获取绘制面的坐标点
                console.log(dataList);
                //获取绘制面的面积
                console.log(handler.getArea(dataList))

            });
        }

运行结果:

天地图测量面积_世界地图拼图技巧1000块[通俗易懂]双击结束,控制台打印面积:

天地图测量面积_世界地图拼图技巧1000块[通俗易懂]

三、多边形获取面积

polygonTool是用鼠标绘制的多边形,用handler.getArea(arrays) ,其中arrays是多边形每个点的经纬度组成的数组,就可以获取到已知经纬度的面积。代码如下:

function addPolygonGetAreaFn(){
            //polyon不能直接测量面积,需要初始化标注工具。
            var config = {
                showLabel: true,
                color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5
            };
            //创建标注工具对象
            handler = new T.PolygonTool(map, config);


            //添加面
            let array = [
                {lat: 28.93556, lng: 115.79179},
                {lat: 28.93445, lng: 115.79303},
                {lat: 28.93401, lng: 115.79102}
            ];

            var points = [];
            array.forEach((v,k)=>{
                points.push(new T.LngLat(v.lng,v.lat));

            })
            //创建面对象
            polygon = new T.Polygon(points,{
                color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5
            });
            //向地图上添加面
            map.addOverLay(polygon);

            //获取面积
            console.log(handler.getArea(polygon.getLngLats()[0]))
        }

四、完整代码(包括添加点、添加面、编辑面、获取面积)

其中jquery.min.js需要引用本地或者线上,如

其二,密钥需要在天地图官网进行申请。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="../../js/jquery.min.js"></script>

    <script type="text/javascript" src="https://api.tianditu.gov.cn/api?v=4.0&tk=您的密钥"></script>
    <style>
        .page{
            width: 100%;
            height: 100vh;
            display: flex;
        }
        .page #mapDiv{
            width: 70%;
            height: 70%;
        }
        .page .buttonCon{
            margin-left: 50px;
        }
        .page .buttonCon .button{
            font-size: 18px;
            padding: 7px 15px;
            border: 1px solid #4bacee;
            border-radius: 10px;
            margin-bottom: 30px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="page">
        <div id="mapDiv"></div>
        <div class="buttonCon">
            <div class="button" onclick="addPolygonGetAreaFn()">添加面</div>
            <div class="button" onclick="startDraw(false)">绘制面(不带面积)</div>
            <div class="button" onclick="startDraw(true)">绘制面(带面积)</div>

            <div class="button editButton" onclick="editPolygonFn()">编辑绘制面</div>
            <div class="button" onclick="getPolygonFn()">获取面的坐标点</div>

            <div class="button addButton" onclick="addMarker()">增加点</div>
            <div class="button editButton" onclick="editMarker()" style="display: none">修改点</div>

        </div>

    </div>
    <script>
        var map;
        var polygon;
        var handler;
        //绘制面的坐标点集合
        var dataList;
        getMap()


        //地图
        function getMap(){
            // map=new T.Map('mapDiv');
            var lay;
          
            //初始化地图对象
            map = new T.Map('mapDiv');


            // var lnglat = new T.LngLat(jshjData[0].lng,jshjData[0].lat)
            var lnglat = new T.LngLat(115.79251,28.93511)
            // var lnglat = new T.LngLat(80.41150304634095,80.44935513895808)

            map.centerAndZoom(lnglat,17);

            document.getElementsByClassName("tdt-control-copyright tdt-control")[0].style.display = 'none';


        }

        //地图点击事件
        map.addEventListener("click",function (e){
            // console.log(e)
        });

        //添加面
        function addPolygonFn(pointsArr){



            // var points = [];
            // pointsArr.forEach((v,k)=>{
            //     points.push(new T.LngLat(v.lng,v.lat));
            //
            // })
            // //创建面对象
            // plygon = new T.Polygon(points,{
            //     color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5
            // });
            //
            // //向地图上添加面
            // map.addOverLay(polygon);

            var points = [];
            // points.push(new T.LngLat(116.41136, 39.97569));
            // points.push(new T.LngLat(116.411794, 39.9068));
            // points.push(new T.LngLat(116.32969, 39.92940));
            // points.push(new T.LngLat(116.385438, 39.90610));
            pointsArr.forEach((v,k)=>{
                points.push(new T.LngLat(v.lng,v.lat));

            })
            //创建面对象
             polygon = new T.Polygon(points,{
                color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5
            });
            //向地图上添加面
            map.addOverLay(polygon);


### 最后

四轮技术面+一轮hr面结束,学习到了不少,面试也是一个学习检测自己的过程,面试前大概复习了 一周的时间,把以前的代码看了一下,字节跳动比较注重算法,面试前刷了下leetcode和剑指offer, 也刷了些在牛客网上的面经。大概就说这些了,写代码去了~



祝大家都能收获大厂offer~



**篇幅有限,仅展示部分内容**

![](https://img-blog.csdnimg.cn/img_convert/ac0b1c2376da47d727e0dc8a77e76478.png)



![](https://img-blog.csdnimg.cn/img_convert/b871b45fb2e6d5442144c863cbcff965.png)

![](https://img-blog.csdnimg.cn/img_convert/f5c18f4b2878302f1f53a8c393e7eb0d.png)


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)**
![img](https://img-blog.csdnimg.cn/img_convert/e3626c9eeca1dfb3a2dc534621d019d4.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
convert/f5c18f4b2878302f1f53a8c393e7eb0d.png)


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)**
[外链图片转存中...(img-Nimykysy-1713077898859)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

今天的文章天地图测量面积_世界地图拼图技巧1000块[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89547.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注