JS计算两个点(经纬度)的距离

  1. function getGreatCircleDistance(lat1, lng1, lat2, lng2) {
  2. var EARTH_RADIUS = 6378137.0;
  3. var PI = Math.PI;
  4. function getRad(d) {
  5. return d * PI / 180.0;
  6. }
  7. var radLat1 = getRad(lat1);
  8. var radLat2 = getRad(lat2);
  9. var a = radLat1 - radLat2;
  10. var b = getRad(lng1) - getRad(lng2);
  11. 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)));
  12. s = s * EARTH_RADIUS;
  13. s = Math.round(s * 10000) / 10000.0;
  14. return s; // 公里数
  15. }

JS判断某个点是否在某个区域(经纬度)内

  1. /**
  2. * 预处理判断 某个点是否在某个区域
  3. * @param {*} lng
  4. * @param {*} lat
  5. * @param {*} points such as '120.133446,30.271645||120.133153,30.271669||120.133138,30.271595||'
  6. */
  7. function preceedPointInArea(lng, lat, points) {
  8. var parking_gps = points
  9. var gpsStringArray = parking_gps.split('||')
  10. var polygon = []
  11. for (var index in gpsStringArray) {
  12. var item = gpsStringArray[index]
  13. var point = item.split(',')
  14. if (point.length == 2) {
  15. point['lng'] = parseFloat(point[0])
  16. point['lat'] = parseFloat(point[1])
  17. polygon.push(point)
  18. }
  19. }
  20. var flag = isPointInPolygon(polygon, lng, lat)
  21. return flag;
  22. }
  23. /**
  24. * 某个点是否在某个区域
  25. */
  26. function isPointInPolygon(polygon, lng, lat) {
  27. var numberOfPoints = polygon.length;
  28. var polygonLats = [];
  29. var polygonLngs = [];
  30. for (var i = 0; i < numberOfPoints; i++) {
  31. polygonLats.push(polygon[i]['lat']);
  32. polygonLngs.push(polygon[i]['lng']);
  33. }
  34. var polygonContainsPoint = false;
  35. for (var node = 0, altNode = (numberOfPoints - 1); node < numberOfPoints; altNode = node++) {
  36. if ((polygonLngs[node] > lng != (polygonLngs[altNode] > lng))
  37. && (lat < (polygonLats[altNode] - polygonLats[node])
  38. * (lng - polygonLngs[node])
  39. / (polygonLngs[altNode] - polygonLngs[node])
  40. + polygonLats[node]
  41. )
  42. ) {
  43. polygonContainsPoint = !polygonContainsPoint;
  44. }
  45. }
  46. return polygonContainsPoint;
  47. }

Javascript判断两个点(经纬度)的距离,以及是否在某个区域内(经纬度字符串)的更多相关文章

  1. JS根据一个经纬度及距离角度,算出另外一个经纬度

    var mapNumberUtil = {}; /** * 根据一个经纬度及距离角度,算出另外一个经纬度 * @param {*} lng 经度 113.3960698 * @param {*} la ...

  2. JavaScript判断两个对象内容是否相等

    ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...

  3. java 坐标系运算 判断一个地理坐标是否在电子围栏 圆、矩形、多边形区域内

    转载自:https://blog.csdn.net/Deepak192/article/details/79402694 测试没问题,我用的是原始坐标:要注意的是坐标转换问题,要看当前是属于什么坐标系 ...

  4. Javascript判断两个日期是否相等

    大家一定遇到过这样的情况,有两个日期对象,然后需要判断他们是否相等. 例如: var date1 = new Date("2013-11-29"); var date2 = new ...

  5. javascript判断两个对象属性以及值是否相等

    objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...

  6. javascript 根据 两点 经纬度 测出距离

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. 2018-7-31-C#-判断两条直线距离

    title author date CreateTime categories C# 判断两条直线距离 lindexi 2018-07-31 14:38:13 +0800 2018-05-08 10: ...

  8. 【跟着子迟品 underscore】JavaScript 中如何判断两个元素是否 "相同"

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  9. Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

随机推荐

  1. python学习(十七) 扩展python

    c, c++, java比python快几个数量级. 17.1 考虑哪个更重要 开发速度还是运行速度更重要. 17.2 非常简单的途径:Jython和IronPython Jython可以直接访问JA ...

  2. java成神之——集合框架之Maps,Hashtable

    集合 Maps HashMap 创建和初始化map 遍历方式 LinkedHashMap WeakHashMap TreeMap 线程锁 Hashtable 结语 集合 Maps HashMap Ma ...

  3. Android 4 学习(10):Adapters简介

    参考<Professional Android 4 Development> Adapters简介 Adapter用于将数据和实现AdapterView接口的ViewGroup绑定在一起. ...

  4. 处理大数据对象clob数据和blob数据

    直接上下代码: package com.learn.jdbc.chap06; import java.io.File; import java.io.FileInputStream; import j ...

  5. Python基础学习四 函数

    1.内置函数 Python内置了很多有用的函数,是可以直接调用的. 参考链接:https://docs.python.org/3/library/functions.html 调用函数的时候,如果传入 ...

  6. consul event

    Command: consul event event 命令提供了一种机制来将自定义用户事件触发到整个数据中心. 这些事件对Consul来说是不透明的,但是它们可以用来构建脚本基础架构来执行自动化部署 ...

  7. GNU 和 g++(转)

    百度知道 GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的.它的目标是创建一套完全自由的操作系统.Richard Stallman最早是在net.unix ...

  8. c语言实践 打印三角形

    效果如下: 我是怎么考虑这个问题的. 首先共有5行,那么我们需要一个循环,让这个循环走5遍. 那么我们有个大概的代码结构 for(int i=0;i<5;i++) { } i的定义域是[0,4] ...

  9. seconds

    set_time_limit();//设置脚本运行时间为1秒

  10. Python基础 之列表、字典、元组、集合

    基础数据类型汇总 一.列表(list) 例如:删除索引为奇数的元素 lis=[11,22,33,44,55] #第一种: for i in range(len(lis)): if i%2==1: de ...