Unity之GPS定位(高德解析)

news/2024/6/15 17:30:57 标签: 前端, c#, 程序人生, GPS, gps

Unity之GPS定位

  • Unity之GPS定位(高德解析)
    • 前言
      • 开篇
      • Unity版本及使用插件
    • 正题
      • 创建场景
      • 写脚本
      • 把脚本挂载到场景中
      • 打包发布场景
      • 安装真机并且测试
    • 代码中的==Key==怎么来的
      • 1、找平台
      • 2、登录或者申请账号
      • 3、获取KEY
    • 结尾
      • 结尾唠叨
      • 今日无推荐

GPS_1">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图看咯。
小黑的GIF
怎么样,是不是很顶!!!!给👍👍👍👍👍👍👍啊

代码中的Key怎么来的

1、找平台

随便打开一个浏览器并且在搜索栏输入:高德开发者平台
在这里插入图片描述

2、登录或者申请账号

在这里插入图片描述

3、获取KEY

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

  • 进入页面后往下滑
    在这里插入图片描述

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

  • 然后在创建好的应用上边点击增加在这里插入图片描述

  • 如何创建有key的应用呢创建一个相关key

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

结尾

结尾唠叨

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

今日无推荐

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

  • 客官,看完get之后记得点赞哟!
  • 小伙伴你还想要别的知识?好的呀,分享给你们😄
  • 小黑的杂货铺,想要什么都有,客官来杯茶喝啊

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


http://www.niftyadmin.cn/n/1582053.html

相关文章

Unity之语音识别

Unity之语音识别前言开篇Unity版本及使用插件正题写脚本挂载到游戏场景中结尾唠家常今日无推荐前言 开篇 今儿心情好&#xff0c;哈哈哈哈哈&#x1f604;今天小黑给大家带来Unity的语音识别功能&#xff0c;超级好用。 Unity版本及使用插件 说到Unity版本&#xff0c;今天…

Unity之生成扫描二维码

Unity之生成扫描二维码Unity之生成扫描二维码前言开篇Unity版本及使用插件正题前期准备首先生成二维码然后需要扫描二维码该使用了挂载脚本绑定按钮和输入框运行内容生成二维码扫描二维码结尾唠家常今日有推荐Unity之生成扫描二维码 前言 开篇 又到了一周一分享啦&#xff0…

Unity_UIWidgets - 组件Scaffold

UIWidgets - 组件Scaffold 各位兄弟姐妹&#xff0c;想通过Unity来开发UIWidgets的么&#xff0c;想通过UIWi的gets、、来开发手机APP么?&#xff1f;想么想么&#xff0c;哈哈哈哈哈哈哈哈。好了&#xff0c;小黑不唠叨了&#x1f602;&#xff0c;今儿给大家介绍一个开发AP…

Unity_UIWidgets - 组件AppBar

Unity_UIWidgets - 组件AppBarAppBar构造构造png观看使用代码使用效果AppBar使用结束结语图标IconQQ今日无推荐Unity_UIWidgets - 组件AppBar各位伙伴&#xff0c;周日愉快啊~~~小黑睡醒了&#xff0c;给大家来分享知识啦上周给大家一个组件Scafflod&#xff0c;那我们之后就来…

Unity_UIWidgets - 组件Container

Unity_UIWidgets - 组件ContainerContainer构造效果结语QQ今日无推荐Unity_UIWidgets - 组件Container 上周给大家讲完了Scaffold的AppBar&#xff0c;那么一个框架的头&#xff0c;是不是该有身体了呀&#xff0c;所以给大家讲一下小黑常作为身体的组件Container吧。 Contai…

Unity_UIWidgets - 组件Drawer

Unity_UIWidgets - 组件Drawer组件DrawerDrawer构造代码效果Drawer使用完毕结语图标IconQQ今日无推荐组件Drawer 各位伙伴&#xff0c;周日愉快啊~~~小黑睡醒了&#xff0c;给大家来分享知识啦上周给大家一个组件Scafflod&#xff0c;那我们之后就来挨个介绍他其中的组件吧。那…

Unity之Android端权限申请

Unity之Android端权限申请Unity之Android端权限申请前言开篇废话Unity版本正题前期准备挂载脚本打包发布安装App查看结果结尾唠家常今日无推荐Unity之Android端权限申请 前言 开篇废话 和小伙伴用了两天时间&#xff0c;进行了需求分离&#xff0c;另立项目&#xff0c;然后…

Unity_UIWidgets - 文字图标Icon

Unity_UIWidgets - 文字图标Icon文字图标Icon开篇不吐不快的废话正题主题Icon获取Icon第一步第二步第三步使用Icon1、导入至Resources文件夹下2、在脚本中进行载入3、使用4、结果结尾QQ今日无推荐文字图标Icon 开篇 不吐不快的废话 记得在3月底的时候小黑前往湖北出差&#…