热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用GPS获取坐标并分析其在Google地图上的偏差

通过手机获取的GPS坐标在手机地图上存在约100-200米的偏差,但在GoogleMaps中搜索同一坐标时,定位非常精确。这种偏差可能出于安全或隐私考虑而被有意引入。此外,不同设备和环境下的GPS信号强度和精度也会影响最终的定位结果。

用手机获取GPS坐标 显示在手机地图偏差大约在100-200米左右,我把坐标放在 Maps.google.com 搜索坐标定位则相当精确。

可能是.....为了安全吧故意加的偏差

不过可以计算偏差使位置精确

代码如下

public class EvilTransform {static double pi &#61; 3.14159265358979324;static double a &#61; 6378245.0;static double ee &#61; 0.00669342162296594323;public static double mgLat;public static double mgLon;public static void transform( double wgLat, double wgLon){if (outOfChina(wgLat, wgLon)){mgLat &#61; wgLat;mgLon &#61; wgLon;return;}double dLat &#61; transformLat(wgLon - 105.0, wgLat - 35.0);double dLon &#61; transformLon(wgLon - 105.0, wgLat - 35.0);double radLat &#61; wgLat / 180.0 * pi;double magic &#61; Math.sin(radLat);magic &#61; 1 - ee * magic * magic;double sqrtMagic &#61; Math. sqrt(magic);dLat &#61; (dLat * 180.0) / (( a * (1 - ee)) / (magic * sqrtMagic) * pi);dLon &#61; (dLon * 180.0) / ( a / sqrtMagic * Math.cos(radLat) * pi);mgLat &#61; wgLat &#43; dLat;mgLon &#61; wgLon &#43; dLon;}static Boolean outOfChina( double lat, double lon){if (lon <72.004 || lon > 137.8347)return true;if (lat <0.8293 || lat > 55.8271)return true;return false;}static double transformLat( double x, double y){double ret &#61; -100.0 &#43; 2.0 * x &#43; 3.0 * y &#43; 0.2 * y * y &#43; 0.1 * x * y &#43; 0.2 * Math.sqrt(Math.abs(x));ret &#43;&#61; (20.0 * Math. sin(6.0 * x * pi) &#43; 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;ret &#43;&#61; (20.0 * Math. sin(y * pi) &#43; 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;ret &#43;&#61; (160.0 * Math. sin(y / 12.0 * pi) &#43; 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;return ret;}static double transformLon( double x, double y){double ret &#61; 300.0 &#43; x &#43; 2.0 * y &#43; 0.1 * x * x &#43; 0.1 * x * y &#43; 0.1 * Math.sqrt(Math.abs(x));ret &#43;&#61; (20.0 * Math. sin(6.0 * x * pi) &#43; 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;ret &#43;&#61; (20.0 * Math. sin(x * pi) &#43; 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;ret &#43;&#61; (150.0 * Math. sin(x / 12.0 * pi) &#43; 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;return ret;}
}

  

转:https://www.cnblogs.com/freexiaoyu/p/3558966.html



推荐阅读
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • POJ3669题目解析:基于广度优先搜索的详细解答
    POJ3669(http://poj.org/problem?id=3669)是一道典型的广度优先搜索(BFS)问题。由于陨石的降落具有时间属性,导致地图状态会随时间动态变化。因此,可以利用结构体来记录每个陨石的降落时间和位置,从而有效地进行状态更新和路径搜索。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 将密码链接至密码输入框中以增强安全性
    在通常情况下,当TextBox的TextMode设置为Password时,直接在后台(.cs文件)绑定值到该文本框是不可行的。然而,在某些场景下,为了增强安全性,需要将密码值安全地传递到密码输入框中。本文介绍了一种方法,通过使用特定的技术手段,实现后台与前端密码输入框的安全绑定,从而提高系统的整体安全性。 ... [详细]
  • Predicting Future Outcomes to Enhance Decision-Making and Action Planning
    通过预测未来结果以优化决策和行动计划。本文探讨了通过机器学习方法预测未来事件,从而提升决策质量和行动效率的策略。作者Alexey Dosovitskiy和Vladlen Koltun提出了一种新的模型,该模型能够通过预测未来的多步状态来指导智能体采取更有效的行动。实验结果显示,这种方法在多种任务中显著提高了性能,为实际应用提供了有力支持。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 基于OpenCV的图像拼接技术实践与示例代码解析
    图像拼接技术在全景摄影中具有广泛应用,如手机全景拍摄功能,通过将多张照片根据其关联信息合成为一张完整图像。本文详细探讨了使用Python和OpenCV库实现图像拼接的具体方法,并提供了示例代码解析,帮助读者深入理解该技术的实现过程。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 在Unity3D中,获取游戏对象有多种实用技巧和方法。除了常见的序列化变量拖拽方式外,还可以使用 `GameObject.Find()` 方法通过对象名称或路径来直接获取游戏对象。此外,`Transform.Find()` 和 `GameObject.FindWithTag()` 也是常用的手段,分别适用于通过层级结构和标签来查找游戏对象。这些方法各有优劣,开发者可以根据具体需求选择最合适的方式。 ... [详细]
author-avatar
手机用户2502874905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有