根据多个坐标点得到中心点,适用于腾讯地图、百度地图、高德地图等等 您所在的位置:网站首页 如何在百度地图上查找车辆位置呢 根据多个坐标点得到中心点,适用于腾讯地图、百度地图、高德地图等等

根据多个坐标点得到中心点,适用于腾讯地图、百度地图、高德地图等等

#根据多个坐标点得到中心点,适用于腾讯地图、百度地图、高德地图等等| 来源: 网络整理| 查看: 265

前端开发,集成了腾讯地图,根据地图上多个坐标点,获取中心坐标点。

后台添加了地图上多个点,组成了一个区域,前端只能选择区域内的点。

取中心点主要是地图展示的默认位置,我希望是区域的中间。

//参数数组points的每一项为每一个点的:纬度,经度 //如 points = ['30.86660,104.390740', '30.861961,104.386963', '30.842287,104.388079', '点的纬度,点的经度'……]; //返回中心点的数组[纬度,精度] getPointsCenter(points) { var point_num = points.length; //坐标点个数 var X = 0, Y = 0, Z = 0; for(let i = 0; i< points.length; i++) { if (points[i] == '') { continue; } let point = points[i].split(','); var lat, lng, x, y, z; lat = parseFloat(point[0]) * Math.PI / 180; lng = parseFloat(point[1]) * Math.PI / 180; x = Math.cos(lat) * Math.cos(lng); y = Math.cos(lat) * Math.sin(lng); z = Math.sin(lat); X += x; Y += y; Z += z; } X = X / point_num; Y = Y / point_num; Z = Z / point_num; var tmp_lng = Math.atan2(Y, X); var tmp_lat = Math.atan2(Z, Math.sqrt(X * X + Y * Y)); return [tmp_lat * 180 / Math.PI, tmp_lng * 180 / Math.PI]; },

调用的方法是:

// 例如我的格式是:纬度1,经度1;纬度2,经度2;…… var str = "30.866603259732102,104.39074045163579;30.8619616865538,104.38696390134282;30.842287763333733,104.38807970029302;30.843761605258894,104.43202501279302;30.851572589486928,104.43545824033208;30.874265047548715,104.41202646237798"; var arr = str.split(';'); var tmp_center = this.getPointsCenter(arr); //总之返回的tmp_center[0]就是纬度,tmp_center[1]就是经度 //如果是腾讯地图如下: //var default_point = new qq.maps.LatLng(tmp_center[0], tmp_center[1]); //this.map.setCenter(default_point);

核心算法已经给出,请自行根据项目需求修改。

 

 

自费租了个阿里云服务器,辛辛苦苦把这个demo代码写了一遍,想预览效果,请用微信扫下面二维码。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有