Unity  工具类 之 简单快速 获取当前所在位置,所在城市,经纬度等

目录

Unity  工具类 之 简单快速 获取当前所在位置,所在城市,经纬度等

一、方法提要:

二、使用注意:

三、json 数据:

四、使用截图:

五、Unity代码:


一、方法提要:

通过 string url = "http://api.map.baidu.com/location/ip?ak=bretF4dm6W5gqjQAXuvP0NXW6FeesRXb&coor=bd09ll";

快速得到当前所在位置的信息,由于返回的是 Json 数据,所以使用 litjson 进行解析数据

二、使用注意:

在使用Litjson解析的时候,由于用到自定义的数据结构,所以注意添加 [SerializeField]

三、json 数据:

{"address":"CN|\u5317\u4eac|\u5317\u4eac|None|CHINANET|0|0","content":{"address":"\u5317\u4eac\u5e02","address_detail":{"city":"\u5317\u4eac\u5e02","city_code":131,"district":"","province":"\u5317\u4eac\u5e02","street":"","street_number":""},"point":{"x":"116.40387397","y":"39.91488908"}},"status":0}

四、使用截图:

五、Unity代码:

using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;public class GetLocationData : MonoBehaviour {public static string TheCurrentCity = "unknown";public Action OnGetLocationDataOKEvent;string url = "http://api.map.baidu.com/location/ip?ak=bretF4dm6W5gqjQAXuvP0NXW6FeesRXb&coor=bd09ll";private void Awake(){StartCoroutine(Request());}void Start(){}public void ToGetLocationData() {StartCoroutine(Request());}IEnumerator Request(){// 判断是否有网络 更具需要处理是否连续判断是否有网while (Application.internetReachability == NetworkReachability.NotReachable) {Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + "正在连接网络");yield return new WaitForSeconds(1.0f);}WWW www = new WWW(url);yield return www;if (www.error != null){Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + " 网络错误!!请检查网络 ");}else{Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + www.text);if (www.text.ToLower().Contains("Error".ToLower()) == false){ResponseBody req = JsonMapper.ToObject<ResponseBody>(www.text);//Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + StringUnicodeHelper.UnicodeToString(req.content.address_detail.city) +" X: "+ req.content.point.x +" Y: "+ req.content.point.x);Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + req.content.address_detail.city + " X: " + req.content.point.x + " Y: " + req.content.point.x);TheCurrentCity = req.content.address_detail.city;}else{Debug.Log(ArrowBLEDebugHelper.DEBUGMARK + " 局域网,或者虚假连接网络");}}// 获取到位置信息的事件if (OnGetLocationDataOKEvent != null) {OnGetLocationDataOKEvent.Invoke();}}
}public class ResponseBody
{public string address;public Content content;public int status;}
[SerializeField]
public class Content
{public string address;public Address_Detail address_detail;public Point point;
}
[SerializeField]
public class Address_Detail
{public string city;public int city_code;public string district;public string province;public string street;public string street_number;public Address_Detail() { }public Address_Detail(string city, int city_code, string district, string province, string street, string street_number){this.city = city;this.city_code = city_code;this.district = district;this.province = province;this.street = street;this.street_number = street_number;}
}
[SerializeField]
public class Point
{public string x;public string y;public Point() { }public Point(string x, string y){this.x = x;this.y = y;}
}public class StringUnicodeHelper{/// <summary>/// 字符串转Unicode码/// </summary>/// <returns>The to unicode.</returns>/// <param name="value">Value.</param>public static string StringToUnicode(string value){byte[] bytes = Encoding.Unicode.GetBytes(value);StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < bytes.Length; i += 2){// 取两个字符,每个字符都是右对齐。stringBuilder.AppendFormat("u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0'));}return stringBuilder.ToString();}/// <summary>/// Unicode转字符串/// </summary>/// <returns>The to string.</returns>/// <param name="unicode">Unicode.</param>public static string UnicodeToString(string unicode){string resultStr = "";string[] strList = unicode.Split('u');for (int i = 1; i < strList.Length; i++){resultStr += (char)int.Parse(strList[i], System.Globalization.NumberStyles.HexNumber);}return resultStr;}}

Unity 工具类 之 简单快速 获取当前所在位置,所在城市,经纬度等相关推荐

  1. Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体)

    Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体) 目录 Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText ...

  2. Unity 工具类 之 编辑扩展器 之 简单的音效管理编辑扩展器面板实现

    Unity 工具类 之 编辑扩展器 之 简单的音效管理编辑扩展器面板实现 目录 Unity 工具类 之 编辑扩展器 之 简单的音效管理编辑扩展器面板实现 一.简单介绍 二.实现原理 三.注意事项 四. ...

  3. Unity 工具类 之 WWW/UnityWebRequest 下载压缩文件(zip),解压到本地且加载使用解压数据的简单案例(内也含压缩文件例子)

    Unity 工具类 之 WWW/UnityWebRequest 网络下载压缩文件(zip),解压到本地,且加载使用解压数据的简单案例(内也含压缩文件例子) 目录 Unity 工具类 之 WWW/Uni ...

  4. Unity 工具类 之 Blender 的下载和简单使用(为捏脸做准备)

    Unity 工具类 之 Blender 的下载和使用(为捏脸做准备) 目录 Unity 工具类 之 Blender 的下载和使用 一.简单介绍 二.下载地址 三.安装 四.简单使用 1.设置成中文界面 ...

  5. Unity 工具类 之 Excel 转换为 json、csv、xml、lua格式

    Unity 工具类 之 Excel 转换为 json.csv.xml.csv 格式 目录 Unity 工具类 之 Excel 转换为 json.csv.xml.csv 格式 一.介绍 二.操作原理 三 ...

  6. Unity 工具类 之 贝塞尔 Bezier 曲线

    Unity 工具类 之 贝塞尔 Bezier 曲线 目录 Unity 工具类 之 贝塞尔 Bezier 曲线 一.简单介绍 二.原理与分类 三.公式与原理图演示 五.注意事项 六.样例使用步骤(三次贝 ...

  7. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  8. Android 自定义Camera相机(封装工具类贼简单)

    背景 目前公司的项目都是,针对生物认证来进行一些验证之类的功能,比方说,交互式活体检测,人脸1v1(对比),人脸1vN(搜索).用系统自带的相机?当然是不够用了,不够用那就自定义啦,就像是前几天七夕, ...

  9. Unity工具类扩展——UGUI代码/脚本自动化生成 (一)

    [为什么要做自动化工具] 工具类的创建是为了解决实际问题或者优化既有流程,我们来先看看一些项目里面经常遇到的问题. 下面这个工具就是可以直接创建一个功能的基础脚本类,就不用每次去复制上次的代码了.然后 ...

最新文章

  1. CF1012F Passports
  2. Spring的常用注解,SpringMVC常用注解
  3. QT实现绘制3D基本形状
  4. Java命令行界面(第9部分):parse-cmd
  5. vaadin_Vaadin应用程序中的EJB查找
  6. oracle数据库swap占用率高,物理内存空余很多,swap被持续占用的问题
  7. SystemVerilog例子---traffic light
  8. 荣耀青春30青春版能升鸿蒙,或是新一代拍照神器 荣耀30青春版今日发布
  9. 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
  10. java找不到指定路径_java创建文件时提示找不到指定路径的解决方法
  11. 禁用Ubuntu鼠标中键复制功能
  12. html点击切换图片代码简易,html点击按钮时切换图片的代码是什么?
  13. blog推荐 - 左岸读书
  14. 使用OpenSSL生成证书
  15. 如何用15秒打动对方
  16. 如何通过命令提示符进入MySQL服务器
  17. 德卡T10-F多功能读卡器|读写机外接密码小键盘在医保领域的应用与性能攻略
  18. 设计一个动物声音“模拟器”
  19. STC15单片机I/O口的四种模式
  20. Tio消息服务器,tio-websocket-spring-boot-starter 的简单使用 原 荐

热门文章

  1. java:实现进制转换工具(附完整源码)
  2. win2008 r2安装mysql_Windows 2008 r2上安装MySQL
  3. C# winform 打开文件选择对话框
  4. 英镑大写_您也可以为10英镑建立一个出色的网站...
  5. Dubbo(超级无敌认真好用,万字收藏篇!!!!)
  6. SAP 界面相关设置
  7. 计算机科学与技术专业师范类,计算机科学与技术专业(师范)简介.PDF
  8. 华为光伏usb适配器_iPhone 12 系列不提供电源适配器了,我们为你找了这些新选项...
  9. win10空间爆满,问题排查,从AppData \ Local \ Packages中删除数据
  10. 用python写游戏脚本原来这么简单,隔壁大妈都跑来要我教她了