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. 【第5篇】AI语音简介

    1.3  AI语音简介 AI语音既人工智能语音技术,以语音识别技术为开端,实现人机语言的通信,包括语音识别技术(ASR).自然语言处理技术(NLP)和语音合成技术(TTS).通俗点说就是通过语音这个媒 ...

  2. 【炫丽】从0开始做一个WPF+Blazor对话小程序

    大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力. 注 要使WPF支持Blazo ...

  3. Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发

    一.标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBa ...

  4. UBOOT编译--- UBOOT顶层Makefile中目标_all和all的关系及背景(四)

    @ 目录 1. 前言 2. 概述 3. 老版本UBOOT(背景) 4. 新版本UBOOT 5. 参考 1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240. 2. 概 ...

  5. SQLi

    点进去发现是个空白网页,查看源码发现一个login.php的文件,话不多说,直接选择复制然后访问 Url: http://5865f5830d034083b9bbc0dafc6b60a5d5d2309 ...

  6. 线性时间选择(含平均情况O(n)和最坏情况O(n)算法)

    前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择.以下包含了我自己的全 ...

  7. NavigationDuplicated Navigating to current location (“/XXX”) is not allowed

    导航不允许导航到当前位置https://stackoverflow.com/questions/57837758/navigationduplicated-navigating-to-current- ...

  8. 真正“搞”懂HTTP协议06之body的玩法(理论篇)

    本来啊,本来,本来我在准备完善这个鸽了四年的系列的时候,是打算按照时间的顺序来完成的,好吧.我承认那个时候考虑的稍稍稍稍稍微有些不足,就是我忽略了HTTP协议的"模块性".因为虽然 ...

  9. mooc上的简单题,(疑惑已解决)

    如题,在简单不过的题,在自己编译器上试了很多例子,输出结果都对.但是oj不给过:(已解决) 统计指定单词出现的次数(10分) 题目内容:输入6个单词,查找第6个单词在前5个单词中出现的次数. 输入:6 ...

  10. 深度学习GPU加速配置方法

    深度学习GPU加速配置方法 一.英伟达官方驱动及工具安装 首先检查自己的电脑驱动版本,未更新至最新建议先将驱动更新至最新,然后点击Nvidia控制面板 2.在如下界面中点击系统信息,点击显示可以看见当 ...