Javascript判断两个点(经纬度)的距离,以及是否在某个区域内(经纬度字符串)
JS计算两个点(经纬度)的距离
function getGreatCircleDistance(lat1, lng1, lat2, lng2) {
var EARTH_RADIUS = 6378137.0;
var PI = Math.PI;
function getRad(d) {
return d * PI / 180.0;
}
var radLat1 = getRad(lat1);
var radLat2 = getRad(lat2);
var a = radLat1 - radLat2;
var b = getRad(lng1) - getRad(lng2);
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000.0;
return s; // 公里数
}
JS判断某个点是否在某个区域(经纬度)内
/**
* 预处理判断 某个点是否在某个区域
* @param {*} lng
* @param {*} lat
* @param {*} points such as '120.133446,30.271645||120.133153,30.271669||120.133138,30.271595||'
*/
function preceedPointInArea(lng, lat, points) {
var parking_gps = points
var gpsStringArray = parking_gps.split('||')
var polygon = []
for (var index in gpsStringArray) {
var item = gpsStringArray[index]
var point = item.split(',')
if (point.length == 2) {
point['lng'] = parseFloat(point[0])
point['lat'] = parseFloat(point[1])
polygon.push(point)
}
}
var flag = isPointInPolygon(polygon, lng, lat)
return flag;
}
/**
* 某个点是否在某个区域
*/
function isPointInPolygon(polygon, lng, lat) {
var numberOfPoints = polygon.length;
var polygonLats = [];
var polygonLngs = [];
for (var i = 0; i < numberOfPoints; i++) {
polygonLats.push(polygon[i]['lat']);
polygonLngs.push(polygon[i]['lng']);
}
var polygonContainsPoint = false;
for (var node = 0, altNode = (numberOfPoints - 1); node < numberOfPoints; altNode = node++) {
if ((polygonLngs[node] > lng != (polygonLngs[altNode] > lng))
&& (lat < (polygonLats[altNode] - polygonLats[node])
* (lng - polygonLngs[node])
/ (polygonLngs[altNode] - polygonLngs[node])
+ polygonLats[node]
)
) {
polygonContainsPoint = !polygonContainsPoint;
}
}
return polygonContainsPoint;
}
Javascript判断两个点(经纬度)的距离,以及是否在某个区域内(经纬度字符串)的更多相关文章
- JS根据一个经纬度及距离角度,算出另外一个经纬度
var mapNumberUtil = {}; /** * 根据一个经纬度及距离角度,算出另外一个经纬度 * @param {*} lng 经度 113.3960698 * @param {*} la ...
- JavaScript判断两个对象内容是否相等
ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...
- java 坐标系运算 判断一个地理坐标是否在电子围栏 圆、矩形、多边形区域内
转载自:https://blog.csdn.net/Deepak192/article/details/79402694 测试没问题,我用的是原始坐标:要注意的是坐标转换问题,要看当前是属于什么坐标系 ...
- Javascript判断两个日期是否相等
大家一定遇到过这样的情况,有两个日期对象,然后需要判断他们是否相等. 例如: var date1 = new Date("2013-11-29"); var date2 = new ...
- javascript判断两个对象属性以及值是否相等
objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...
- javascript 根据 两点 经纬度 测出距离
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 2018-7-31-C#-判断两条直线距离
title author date CreateTime categories C# 判断两条直线距离 lindexi 2018-07-31 14:38:13 +0800 2018-05-08 10: ...
- 【跟着子迟品 underscore】JavaScript 中如何判断两个元素是否 "相同"
Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...
- Java与JavaScript中判断两字符串是否相等的区别
JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...
随机推荐
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
分享出去的内容,可以通过jssdk进行修改. 1.配置jssdk Wx_config.html <?php import("@.ORG.jssdk"); $jssdk = n ...
- python学习(十) 自带电池
10.1 模块 >>> import math >>> math.sin(0) 0.0 10.1.1 模块是程序 假设自己写的hello.py放在c:\python ...
- 用python40行代码编写的计算器
效果图 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
- Windows + Ubuntu 双系统安装
前言:本篇文章是对之前文章的更新,更新的主内容是把原来用手机拍摄的图片换成了虚拟机的截图,以及对磁盘划分的新的见解和一些使用感受,原本是打算删除之前的那篇Win + Ubuntu双系统的文章的,后来想 ...
- ffmpeg转码flv到avi《转》
一个视频转码器,则需要对视频进行解码,然后再对视频进行编码,因而相当于解码器和编码器的结合. 下面图列举了一个视频的转码流程. 输入的视频封装格式是flv 视频编码标准是H.264 音频编码标准是AA ...
- 分析比较多表查询中的IN与JOIN
IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径.那两者是怎么运行的?IN与JOIN哪个更好?下面就来分析与比较. 现在有te ...
- Git的配置和使用帮助
Git的配置和使用帮助 1.Git的配置 ============== Git有三个地方可以存放配置:系统级配置文件/etc/gitconfig.用户级配置文件~/.gitconfig和仓库级配置文件 ...
- saltstack系列(六)——zmq扩展(二)
问题 我们已经熟练的掌握了REQ/REP模式,它是一个一对多的模式,一个REP对应多个REQ. 但是现实工作中,我们会遇到这样的难题,一个REP无法满足REQ的提问,因为REQ太多了,虽然可以增加一个 ...
- Javamail简单使用案例
邮件开发环境搭建 邮件服务器 易邮邮件服务器 配置如下 邮件客户端 Foxmail 配置如下 使用Javamail发送邮件 下载 javamail-samples.zip javax.mail.jar ...
- 第01章 开发准备(对最新版的RN进行了升级)1-3+项目结构介绍