- 浏览: 258246 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
百度地图测距js代码:
大概方法即以上方法。这里对方法进行改写。
写成java形式
传入参数为list。先算出两点之间的距离。然后进行累加。
如现在有3个点,那么先算1,2距离,然后算2,3距离。相加即得到结果。
以下是验证:
var EARTHRADIUS = 6370996.81; /** * 将度转化为弧度 * @param {degree} Number 度 * @returns {Number} 弧度 */ GeoUtils.degreeToRad = function(degree){ return Math.PI * degree/180; } /** * 将弧度转化为度 * @param {radian} Number 弧度 * @returns {Number} 度 */ GeoUtils.radToDegree = function(rad){ return (180 * rad) / Math.PI; } /** * 将v值限定在a,b之间,纬度使用 */ function _getRange(v, a, b){ if(a != null){ v = Math.max(v, a); } if(b != null){ v = Math.min(v, b); } return v; } /** * 将v值限定在a,b之间,经度使用 */ function _getLoop(v, a, b){ while( v > b){ v -= b - a } while(v < a){ v += b - a } return v; } /** * 计算两点之间的距离,两点坐标必须为经纬度 * @param {point1} Point 点对象 * @param {point2} Point 点对象 * @returns {Number} 两点之间距离,单位为米 */ GeoUtils.getDistance = function(point1, point2){ //判断类型 if(!(point1 instanceof BMap.Point) || !(point2 instanceof BMap.Point)){ return 0; } point1.lng = _getLoop(point1.lng, -180, 180); point1.lat = _getRange(point1.lat, -74, 74); point2.lng = point2.lat = _getRange(point2.lat, -74, 74); var x1, x2, y1, y2; x1 = GeoUtils.degreeToRad(point1.lng); y1 = GeoUtils.degreeToRad(point1.lat); x2 = GeoUtils.degreeToRad(point2.lng); y2 = GeoUtils.degreeToRad(point2.lat); return EARTHRADIUS * Math.acos((Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1))); } /** * 计算折线或者点数组的长度 * @param {Polyline|Array<Point>} polyline 折线对象或者点数组 * @returns {Number} 折线或点数组对应的长度 */ GeoUtils.getPolylineDistance = function(polyline){ //检查类型 if(polyline instanceof BMap.Polyline || polyline instanceof Array){ //将polyline统一为数组 var pts; if(polyline instanceof BMap.Polyline){ pts = polyline.getPath(); } else { pts = polyline; } if(pts.length < 2){//小于2个点,返回0 return 0; } //遍历所有线段将其相加,计算整条线段的长度 var totalDis = 0; for(var i =0; i < pts.length - 1; i++){ var curPt = pts[i]; var nextPt = pts[i + 1] var dis = GeoUtils.getDistance(curPt, nextPt); totalDis += dis; } return totalDis; } else { return 0; } }
大概方法即以上方法。这里对方法进行改写。
写成java形式
package com.duduli.li.gps2baidu; public class Point { private double x; private double y; public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } }
package com.duduli.li.gps2baidu; import java.util.ArrayList; import java.util.List; public class Distacst { private double EARTHRADIUS = 6370996.81; public double degreeToRad(double degree){ return Math.PI*degree/180; } public double _getRange(double v, int a, int b){ if(a != 0){ v = Math.max(v, a); } if(b != 0){ v = Math.min(v, b); } return v; } public double _getLoop(double v, int a, int b){ while( v > b){ v -= b - a; } while(v < a){ v += b - a; } return v; } public double getDis(List<Point> list){ int size = list.size(); double dis = 0.0; for(int i=0;i<size-1;i++){ dis += EARTHRADIUS * Math.acos((Math.sin(degreeToRad(_getLoop(list.get(i).getY(), -74, 74))) * Math.sin(degreeToRad(_getLoop(list.get(i+1).getY(), -74, 74))) + Math.cos(degreeToRad(_getLoop(list.get(i).getY(), -74, 74))) * Math.cos(degreeToRad(_getLoop(list.get(i+1).getY(), -74, 74))) * Math.cos(degreeToRad(_getLoop(list.get(i).getX(), -180, 180)) - degreeToRad(_getLoop(list.get(i+1).getX(), -180, 180))))); } return dis; } public static void main(String[] args) { List<Point> list = new ArrayList<Point>(); Point p1 = new Point(); p1.setX(116.442953); p1.setY(39.982648); list.add(p1); Point p2 = new Point(); p2.setX(116.444396); p2.setY(39.982521); list.add(p2); Point p3 = new Point(); p3.setX(116.44574800000001); p3.setY(39.982348); list.add(p3); System.out.println(new Distacst().getDis(list)); // System.out.println(new Distacst().getDis()); // System.out.println(new Distacst().showList(getList())); } }
传入参数为list。先算出两点之间的距离。然后进行累加。
如现在有3个点,那么先算1,2距离,然后算2,3距离。相加即得到结果。
以下是验证:
发表评论
-
使用poi实现xlsx的读取
2018-08-31 17:01 653这里只是记录下,使用poi进行读取xlsx。 可以读取全部数据 ... -
使用java实现输出商品条码机商品数据信息
2018-08-29 15:43 1086如图片所示 这里采用方案是: 1,使用jbarcode生成一 ... -
spring boot + jpa实现数据查询工作
2018-08-28 12:38 2428前期已经将mybatis和hibernate已经进行了掌握。 ... -
使用程序实现截屏获取teamview登录信息
2018-04-16 10:42 562很多的时候,我们需要使用teamview进行远程登录。 比如现 ... -
【java】jfreechart退出图标程序继续
2014-11-24 11:34 813做一个窗体,然后调用jfreechart进行图标显示。 当关闭 ... -
【web service】使用cxf对客户端进行开发工作
2014-07-16 10:04 9251,在eclipse中建立一个java项目,为客户端调用web ... -
【java】图片传输方案
2014-05-04 09:59 4589之前做的web service 涉及到一些基础的传输,如基本类 ... -
【java】调用微软语音系统读取文本
2014-05-04 09:52 2429先期准备工作: 安装微软speechsdk51,下载j ... -
【java】试用讯飞SDK开发语音tts初步代码
2014-04-22 16:41 7210tts开发对中文并不很支 ... -
【java】字符串的压缩转码base64
2012-09-11 09:13 10645由于客户端与服务端之间采用web service的方式进行传输 ... -
【java】使用jna调用delphi编译dll总结
2012-09-04 11:29 1184调用dll中,可以的入参为pchar。返回的参数为pwidec ... -
【机器环境】java语言环境不同会出现莫名其妙的问题
2012-09-01 10:49 1021有这么一个功能: 模块是这样做的,因为做的是底层。 首先上层使 ... -
【java】试用JNA调用Delphi的dll方法。
2012-08-30 11:04 5115参考文章:http://hi.baidu.com/zuchan ... -
【java】对sql语句进行解析。
2012-08-29 16:25 7068因为在项目中需要对sql进行解析,那么所以业务逻辑比较复杂。 ... -
【接口开发】一个底层业务的很麻烦的接口开发
2012-08-29 14:53 990接口框架采用cxf,然后查询使用hibernate+sql的方 ... -
【java多线程】昨天的一个面试题目
2012-08-09 10:24 1082设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次 ... -
【一个笔试题目】java按字节进行截断
2012-08-08 22:21 1551不可否认,这是一个蛋疼的笔试题: 编程:编写一个截取字符串的函 ... -
【java】判断一个数是不是2的N次方
2012-08-01 19:10 9773第一种方法,对N进行循环除以2. public boolea ... -
java 加密。
2012-07-27 15:14 1071mark一下。 java下面的加密有三类,1,为sun自己的 ... -
【JAVA】加密解密(转http://www.wangchao.net.cn/bbsdetail_1742.html)
2012-03-05 11:42 1438package com.duduli.li; impor ...
相关推荐
【JAVA项目暗箱和改写项目】的知识点涵盖了多个领域,包括Java编程语言的基础、项目构建、代码管理和软件转型。以下是对这些知识点的详细解析: 1. **Java编程语言**:Java是一种广泛使用的面向对象的编程语言,...
本文将详细讨论“GPS坐标转换百度坐标js”的相关知识点,包括GPS坐标系统、百度地图API、JavaScript编程以及批量处理坐标转换的方法。 首先,我们要了解的是GPS坐标系统。全球定位系统(GPS)使用的是WGS84坐标系,...
百度地图,路书,边走边画线,显示详细消息demo,填上自己的ak可以正常运行,改写move方法
在介绍如何将使用一般方法实现的无限级折叠菜单改写成面向对象的方式之前,需要了解几个重要的概念和知识点。 首先,无限级折叠菜单是一种网页元素,用户可以通过点击来展开或折叠菜单项,这种功能在导航栏中尤为...
本项目是基于Java语言改写的俄罗斯方块小游戏,旨在帮助初学者更好地掌握Java编程基础,同时体验游戏开发的乐趣。下面我们将深入探讨该项目中的主要知识点。 1. **Java基础知识**: - **类与对象**:游戏的核心...
标题中的"pdf_排序_java语言改写c_"表明这是一个关于将C语言的排序算法转换为Java语言的教程或参考资料。这个主题对学习Java编程的学生,尤其是那些有一定C语言基础的人来说非常有帮助,因为他们可以通过对比两种...
### Java利用接口和抽象类改写求圆的面积和梯形的面积 #### 深入理解Java的接口和抽象类 在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中...这将创建一个名为OracleTriggerJava的Java类,该类包含两个方法:main方法和modify方法。main方法用于文件的写入操作,而modify方法则用于文件的读写操作。
echarts中使用天地图的插件示例,使用echarts中百度地图的插件改写,让其支持天地图的展示展示及使用。,使用echarts中高端地图的插件改写,让其支持天地图的展示及使用。 1.echarts-extension-tmap.js 在高度地图...
【标题】"根据javaeditor改写的bat编辑器"是一个基于Eclipse示例程序`javaeditor`进行改造的项目,旨在创建一个专门针对批处理(BAT)脚本的文本编辑器。这个编辑器不仅具备基本的文本编辑功能,还特别加入了对BAT...
Java的`String`类提供了一些方法,如`indexOf()`和`contains()`,但更复杂的匹配可能需要用到正则表达式,通过`java.util.regex`包中的类实现。 每个项目都是一个独立的知识点,同时它们也相互关联,如事件处理、...
ArcGIS For JavaScript (简称 ArcGIS for JS) 是Esri公司推出的一款强大的地图开发库,用于在Web应用中集成地理信息系统功能。它提供了一套完整的API,用于创建交互式的地图服务,包括矢量图层、栅格图层、地形图层...
java-业务需求需要根据经纬度计算面积,整理了一下根据经纬度计算面积,根据openlayers借鉴改写,亲测可用!
双目测距是一种基于计算机视觉技术的三维空间距离测量方法,它利用两个摄像头捕捉到的图像差异来计算物体的距离。SIFT(尺度不变特征变换)算法在此过程中扮演关键角色,因为它能够提供对图像尺度、旋转和光照变化的...
4. 最后,需要在 Java 代码中调用 JNI 类的native方法,以便实现内存的读取与修改。 示例代码 以下是使用 C 语言实现内存的读取与修改的示例代码: MainActivity.java: ```java package com.gs.jc; import ...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
普通作业啦。 需要的速度下载。
Java 8允许接口定义私有方法和静态方法,增强了接口的功能,使其能够更好地充当功能的容器。 以上就是Java 8的主要特性,通过尚硅谷的Java8练习源码,学习者可以实践这些概念,加深理解,并提升编程技能。这份源码...
这里的“简单java文件过滤”指的是通过编程方式筛选出满足特定条件的文件,例如根据文件名、扩展名或文件内容进行过滤,并对这些文件进行进一步的操作,如改写特定字符串。下面我们将深入探讨这一主题。 首先,我们...
《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了的部分内容,以便适应Java的最新特性。本版也不例外,它反遇了Java SE6的新特性...