Unity之GPS定位(高德解析)

前言

开篇

  • 哈喽艾瑞宝嘚,又一周没见到小黑了,肯定想我了吧。
  • 既然这样,那小黑一定要给大家一个忠告,在办公大楼上厕所千万别玩手机啊~~,小黑深受其害,手机(OPPO R9 Plus)自己提前退休了,其实还是有些不舍得的,不过毕竟用了4年多了,也该换了,然后今儿手机到了,心情很好啊,哈哈哈哈哈哈哈!
  • 好了好了,不给大家扯皮了,咱们直入主题!

Unity版本及使用插件

说到Unity版本,那当然还是老样子啦,Unity2019.4.4f1
插件用到了:LitJson

正题

  • 这两天项目上边说是让加一个显示当前位置的功能,那我一想那不就是定位么,果断就答应了,这是学习的时候啊,然而,我马上就搜到了大佬的博客,然后有了下边的代码。。。。。。。。
  • 当然了啊,我也自己想了好多完善了好多,不过这版中只有申请权限。

创建场景

第一步在场景中创建相关Text文本,用来显示

写脚本

using UnityEngine;
using System.Collections;
using LitJson;
using UnityEngine.Networking;
using UnityTools;
using UnityEngine.Android;
namespace Location
{
public class LocationTest : MonoBehaviour
{
private string longitude;//经度
private string latitude;//纬度
void Start() => StartCoroutine(StartGPS());
IEnumerator StartGPS()
{
//Unity给我们提供的一个相关权限类 Permission,可以判断当前相关权限是否开启
if (Permission.HasUserAuthorizedPermission(Permission.FineLocation))
{
//如果没有开启就提示开启权限
Permission.RequestUserPermission(Permission.FineLocation);
}
Debuger.LogError("开始获取GPS信息");
// 检查位置服务是否可用
if (!Input.location.isEnabledByUser)
{
Debuger.Log("位置服务不可用");
yield break;
}
// 查询位置之前先开启位置服务
Debuger.Log("启动位置服务");
Input.location.Start();
// 等待服务初始化
int maxWait = 20;
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
{
Debuger.Log(Input.location.status.ToString() + ">>>" + maxWait.ToString());
yield return new WaitForSeconds(1);
maxWait--;
}
// 服务初始化超时
if (maxWait < 1)
{
Debuger.Log("服务初始化超时");
yield break;
}
// 连接失败
if (Input.location.status == LocationServiceStatus.Failed)
{
Debuger.Log("无法确定设备位置");
yield break;
}
else
{
Debuger.Log("Location: \n" +
"纬度:" + Input.location.lastData.latitude + " \n" +
"经度:" + Input.location.lastData.longitude + " \n" +
"海拔:" + Input.location.lastData.altitude + " \n" +
"水平精度:" + Input.location.lastData.horizontalAccuracy + " \n" +
"垂直精度:" + Input.location.lastData.verticalAccuracy + " \n" +
"时间戳:" + Input.location.lastData.timestamp);
longitude = Input.location.lastData.longitude.ToString();
latitude = Input.location.lastData.latitude.ToString();
StartCoroutine(GetRequest(
"http://restapi.amap.com/v3/geocode/regeo?key="+ key + "&location=" + longitude + "," + latitude));
}
// 停止服务,如果没必要继续更新位置,(为了省电
Input.location.Stop();
}
string key = ""; //去高德地图开发者申请
IEnumerator GetRequest(string uri)
{
using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
{
// Request and wait for the desired page.
yield return webRequest.SendWebRequest();
string[] pages = uri.Split('/');
int page = pages.Length - 1;
if (webRequest.isNetworkError)
{
// Debug.Log(pages[page] + ": Error: " + webRequest.error);
}
else
{
JsonData jd = JsonMapper.ToObject(webRequest.downloadHandler.text);
Debuger.LogError("rn" + jd["regeocode"]["formatted_address"].ToString());
}
}
}
}
}

把脚本挂载到场景中

打包发布场景

安装真机并且测试

小黑为了给你们看动态结果,只好先拿手机录像,并且从电脑上制作GIF图看咯。

怎么样,是不是很顶!!!!给啊

代码中的Key怎么来的

1、找平台

随便打开一个浏览器并且在搜索栏输入:高德开发者平台

2、登录或者申请账号

3、获取KEY

  • 首先顶部导航栏点击开发支持=>Web服务=>Web服务API

  • 进入页面后往下滑

  • 进入页面后右上角点击创建新应用

  • 然后在创建好的应用上边点击增加

  • 如何创建有key的应用呢

  • 然后我们就能看到相关的key值了,把它复制到脚本中,然后使用吧!

结尾

结尾唠叨

  • 小黑的今日分享结束啦,小伙伴们你们get到了么,你们有没有更好的办法呢,可以评论区留言分享,也可以加小黑的QQ:841298494,大家一起进步。

今日无推荐

该篇参考博客:https://blog.csdn.net/qq_35080168/article/details/103425746

程序的道路上学习永不停止,探索随时进行。
Let’s go. Just do it. We can.

Unity之GPS定位(高德解析)的更多相关文章

  1. Unity之GPS定位(腾讯sdk)

    Unity之GPS定位(腾讯sdk) 目录 Unity之GPS定位(腾讯sdk) 前言 Unity版本及使用插件 正题 编写脚本 Run运行, 跑起来就行,具体要什么,去相关类找就好了. 没有腾讯地图 ...

  2. GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样?

    GPS定位为什么要转换处理?高德地图和百度地图坐标处理有什么不一样? 先了解一下 高德地图 采用: GCJ-02 (不可逆) 百度百科: http://baike.baidu.com/link?url ...

  3. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  4. GPS定位解决偏差

    目录 GPS定位解决偏差 开篇 实践 1.解决思路以及步骤 2.实践出真理! 3.上坐标系之间的代码. 希望大家:点赞,留言,关注咯~ 唠家常 今日推荐都在文章中了 GPS定位解决偏差 开篇 大家都知 ...

  5. GPS定位 测试

    public class MainActivity extends Activity { private final String TAG = "BX"; private Loca ...

  6. [置顶] xamarin android使用gps定位获取经纬度

    看了文章你会得出以下几个结论 1.android定位主要有四种方式GPS,Network(wifi定位.基站定位),AGPS定位 2.绝大部分android国产手机使用network进行定位是没有作用 ...

  7. ionic基于GPS定位并通过百度地图获取定位详细信息

    相信所有的前端攻城狮都会碰到移动端App.里面获取用户定位信息. 那么问题来了,怎么获取用户的定位信息(经纬度)呢. 当然方法有很多,通过百度地图API 以及 高德地图 API都是可以的.但是两个获取 ...

  8. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  9. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

随机推荐

  1. python的一些运算符

    # 1.算术运算符 print('1.算术运算符') # 1.1 + 求和 a = 10 b = 20 c = a + b print(c) print('a+b={}'.format(c)) pri ...

  2. Python基础部分:1、typora软件和对计算机的认识

    目录 一.typora软件 1.安装 2.markdown语法 二.计算机的本质 1.进制数 三.计算机五大组成部分概要 1.控制器 2.运算器 3.存储器 4.输入设备 5.输出设备 一.typor ...

  3. 【项目】AtCoder for Chinese

    前排提示:Github 内容搭配梯子食用效果更佳( 项目地址 网页 插件安装 Join us or Give us a star ! 注:因内容迁移,下列链接暂时失效(用空再搬一遍)qwq Trans ...

  4. 如何查看mysql数据目录位置

    mysql> show global variables like "%datadir%"; +---------------+-----------------+ | Va ...

  5. 2022春每日一题:Day 8

    题目:[HNOI2003]激光炸弹 二维前缀和,扫大小为m*m的矩形,取最大即可. 代码: #include <cstdio> #include <cstdlib> #incl ...

  6. 【云原生 · Kubernetes】部署博客系统

    [云原生 · Kubernetes]Kubernetes运维 接着上次的内容,后续来了! (1)配置NFS服务 master节点安装NFS与RPC服务: # yum install -y nfs-ut ...

  7. halcon如何识别硬币?

    halcon如何识别硬币? 前言 最近一直在学习halcon,在此做了一个案例,分享给大家,效果图如下: 1.思路分析 通过观察,发现1元,5角,1角,它们在面值的文字描述不一样,硬币显示的花纹不一样 ...

  8. Zabbix技术分享——使用Zabbix6.0监控业务日志

    企业日常IT运维过程中,常会碰到需要监控业务日志的情况,以下将介绍如何使用Zabbix6.0监控业务日志. 应用场景描述: 企业IT运维部门使用自建zabbix平台对公司某业务系统进行了监控.近段时间 ...

  9. 【每日一题】【集合增删】2022年1月13日-NC41 最长无重复子数组-220113/220122

    描述 给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同. 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1 ...

  10. CTF隐写术总结

    CTF隐写术总结 1.查看图像属性及详细信息 或者查看图像的高度,利用winhex等工具改变图像宽度或高度,查看是否有隐藏信息. 2.利用winhex或nodepad++打开搜索ctf,flag,ke ...