清泛IT社区

标题: AppInventor2 调用位置传感器在高德地图上显示当前位置存在偏差?需进行坐标转换,原生已支持! [打印本页]

作者: App Inventor 2     时间: 2024-05-12 11:02
标题: AppInventor2 调用位置传感器在高德地图上显示当前位置存在偏差?需进行坐标转换,原生已支持!
使用APP Inventor2 调用手机位置传感器获取到的GPS经纬度, 在高德地图上显示时发现显示的位置不是当前所在位置,原因是坐标格式不一致,需要进行坐标转换,将GPS坐标转换为高德坐标,才能正常的显示当前位置。

使用以下代码显示我的当前位置及我当前所在位置的静态地图:
(, 下载次数: 88277)


在手机上显示如下,我怎么去湖里了,是坐船去了还是手机定位偏差太大了?都不是,是因为坐标没有经过正确的换算。
(, 下载次数: 88763)


将代码改一改,利用高德的Web API进行坐标转换,更详细的坐标转换方法请去高德官网查看。
(, 下载次数: 88221)


获取坐标转换结果时我们得到的是JSON字符串,利用App inventor的字典很容易进行解析,以下是通过坐标转换API获取的JSON字符串示例:

  1. {"status":"1","info":"ok","infocode":"10000","locations":"112.559509006077,37.802673339844"}
复制代码

在手机上查看我的位置已经显示正常:
(, 下载次数: 88748)


以上代码仅为功能示例,如需实际使用需要做一些优化。
出处:https://blog.csdn.net/xiaowenshen/article/details/106565207


作者: App Inventor 2     时间: 2026-04-12 20:18
https://restapi.amap.com/v3/assi ... convert?locations=<经度,纬度>&coordsys=gps&output=JSON&key=
作者: App Inventor 2     时间: 2026-04-12 21:15
标准 GPS 坐标 vs 高德坐标(火星坐标)有什么差异,以及为什么需要转换。这涉及到坐标基准体系(geodetic datum)的问题。

一、两种坐标体系定义
1️⃣ GPS 坐标(WGS-84)
全称:WGS-84(World Geodetic System 1984)
来源:GPS卫星系统原生坐标
特点:
全球统一标准
无偏移(理论真实地理位置)
常见来源:
GPS芯片
海外地图(Google Maps 国际版)
后端定位服务
2️⃣ 高德坐标(GCJ-02)
又叫:火星坐标系(GCJ-02)
使用方:高德地图、百度地图(百度在此基础上再加一层偏移)
特点:
在 WGS-84 基础上加密偏移
只在中国大陆范围内生效
偏移量大约:
100~700 米(不固定)
二、为什么会有偏移?

这是政策+安全层面的要求:

中国法律规定:
公开地图必须使用加密坐标(GCJ-02)
结果:
GPS原始坐标不能直接用于地图展示
必须做一次“加密转换”
三、直观理解(重点)

可以把它理解为:

坐标类型        类比
WGS-84        真实世界位置
GCJ-02        被“扰动”的地图坐标

???? 如果你直接用 GPS 坐标画在高德地图上:

结果:点会“漂移”(明显偏离真实位置)
作者: App Inventor 2     时间: 2026-04-12 21:19
包含坐标转换的demo:
(, 下载次数: 2)

作者: App Inventor 2     时间: 2026-04-13 16:22
已经内置坐标转换函数,经测试,精度达标:121.43975(GPS纬度)
内置坐标转换结果:121.4443625
高德在线api转换:121.444362250435
大概相差2-3厘米,可以忽略不计,业内主流的算法,还是非常准确的。

作者: App Inventor 2     时间: 2026-04-13 22:15
已原生支持,已升级完成。
(, 下载次数: 145)

(, 下载次数: 150)






欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3