Unity之GPS定位(腾讯sdk)

目录

Unity之GPS定位(腾讯sdk)

前言

Unity版本及使用插件

正题

编写脚本

Run运行, 跑起来就行,具体要什么,去相关类找就好了。

没有腾讯地图SDK的Key?

希望大家:点赞,留言,关注咯~       😘😘😘😘

唠家常

今日无推荐




前言

      这段时间在写项目的时候,需要用到GPS逆地址解析,小黑果断就拿出来了之前写的一篇文章Unity之GPS定位(高德),但是经过商量,决定用腾讯地图的SDK腾讯位置服务,于是我们就开始了,也有了这篇文章。

Unity版本及使用插件

Unity版本:        Unity2020.3.13f1c1
命名空间:         Newtonsoft.Json

那么,废话不多说,之前每篇博客废话太多,自己都开始嫌弃了。。

正题

编写脚本

第一个脚本:别忘了挂载

public class TencentLocation : MonoBehaviour
{
    /// <summary>
    /// 获取当前位置及周围信息
    /// </summary>
    /// <param name="lat">纬度</param>
    /// <param name="lng">经度</param>
    /// <param name="callback">当前位置信息</param>
    /// <returns></returns>
    public IEnumerator GetRequest(float lat, float lng, Action<LocationAnalysis> callback)
    {
        Uri uri = new Uri("https://apis.map.qq.com/ws/geocoder/v1/?location=" + $"{lat},{lng}" + "&key= 你在腾讯官网申请的Key  &get_poi=1");
        using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
        {
            // Request and wait for the desired page.
            yield return webRequest.SendWebRequest();
            if (webRequest.result == UnityWebRequest.Result.Success)
            {
                System.Object obj = JsonConvert.DeserializeObject(webRequest.downloadHandler.text);
                Newtonsoft.Json.Linq.JObject js = obj as Newtonsoft.Json.Linq.JObject;
                if (js == null)
                    yield return null;
                callback?.Invoke(js["result"].ToObject<LocationAnalysis>());
            }
        }
    }
}

第二个脚本:这个脚本可花了我不少时间,小黑

using System.Collections.Generic;

namespace TencentInverseAnalysis
{
    /// <summary>
    /// 地址解析
    /// </summary>
    public class LocationAnalysis
    {
        /// <summary>
        /// 经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 北京市朝阳区广顺北大街
        /// </summary>
        public string address { get; set; }
        /// <summary>
        /// 格式化地址
        /// </summary>
        public Formatted_addresses formatted_addresses { get; set; }
        /// <summary>
        /// 地址成分
        /// </summary>
        public Address_component address_component { get; set; }
        /// <summary>
        /// 地址信息
        /// </summary>
        public Ad_info ad_info { get; set; }
        /// <summary>
        /// 地址参考
        /// </summary>
        public Address_reference address_reference { get; set; }
        /// <summary>
        /// 信息点数量
        /// </summary>
        public int poi_count { get; set; }
        /// <summary>
        /// 信息点
        /// </summary>
        public List<PoisItem> pois { get; set; }
    }

    /// <summary>
    /// 经纬度位置
    /// </summary>
    public class Location
    {
        /// <summary>
        /// 纬度
        /// </summary>
        public double lat { get; set; }
        /// <summary>
        /// 经度
        /// </summary>
        public double lng { get; set; }
    }

    /// <summary>
    /// 格式化后的地址
    /// </summary>
    public class Formatted_addresses
    {
        /// <summary>
        /// 推荐定位地址
        /// </summary>
        public string recommend { get; set; }
        /// <summary>
        /// 粗糙定位地址
        /// </summary>
        public string rough { get; set; }
    }

    /// <summary>
    /// 地址成分
    /// </summary>
    public class Address_component
    {
        /// <summary>
        /// 国家
        /// </summary>
        public string nation { get; set; }
        /// <summary>
        /// 省份
        /// </summary>
        public string province { get; set; }
        /// <summary>
        /// 市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 区
        /// </summary>
        public string district { get; set; }
        /// <summary>
        /// 街道
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 街道号
        /// </summary>
        public string street_number { get; set; }
    }

    /// <summary>
    /// 地址信息
    /// </summary>
    public class Ad_info
    {
        /// <summary>
        /// 国家编码
        /// </summary>
        public string nation_code { get; set; }
        /// <summary>
        /// 省份编码
        /// </summary>
        public string adcode { get; set; }
        /// <summary>
        /// 城市编码
        /// </summary>
        public string city_code { get; set; }
        /// <summary>
        /// 位置名
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 国家
        /// </summary>
        public string nation { get; set; }
        /// <summary>
        /// 省份
        /// </summary>
        public string province { get; set; }
        /// <summary>
        /// 市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 区
        /// </summary>
        public string district { get; set; }
    }

    /// <summary>
    /// 地址参考
    /// </summary>
    public class Address_reference
    {
        /// <summary>
        /// 
        /// </summary>
        public Street_number street_number { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Business_area business_area { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Famous_area famous_area { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Crossroad crossroad { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Town town { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Street street { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Landmark_l2 landmark_l2 { get; set; }
    }
    #region 地址参考
    /// <summary>
    /// 街道号码
    /// </summary>
    public class Street_number
    {
        /// <summary>
        /// 街道ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 街道台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 街道经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 街道据当前距离
        /// </summary>
        public double _distance { get; set; }
        /// <summary>
        /// 街道据当前方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 所在经营范围
    /// </summary>
    public class Business_area
    {
        /// <summary>
        /// 范围ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 范围台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 范围经纬度
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 距离
        /// </summary>
        public int _distance { get; set; }
        /// <summary>
        /// 方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 范围内已注册信息点
    /// </summary>
    public class Famous_area
    {
        /// <summary>
        /// 店铺ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 店铺台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 店铺位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 店铺距离
        /// </summary>
        public int _distance { get; set; }
        /// <summary>
        /// 店铺方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 十字路口
    /// </summary>
    public class Crossroad
    {
        /// <summary>
        /// 十字路口ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 路口台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 路口经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 路口据当前位置距离
        /// </summary>
        public double _distance { get; set; }
        /// <summary>
        /// 路口据当前位置方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 区块
    /// </summary>
    public class Town
    {
        /// <summary>
        /// 区块ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 区块台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 区块位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 区块据当前位置距离
        /// </summary>
        public int _distance { get; set; }
        /// <summary>
        /// 区块据当前位置方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 街道
    /// </summary>
    public class Street
    {
        /// <summary>
        /// 街道ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 街道台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 街道经纬度位置信息
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 街道据当前位置距离
        /// </summary>
        public double _distance { get; set; }
        /// <summary>
        /// 街道据当前位置方向
        /// </summary>
        public string _dir_desc { get; set; }
    }

    /// <summary>
    /// 地标信息
    /// </summary>
    public class Landmark_l2
    {
        /// <summary>
        /// 地标ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 地标台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 地标经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 地标据当前位置距离
        /// </summary>
        public int _distance { get; set; }
        /// <summary>
        /// 地标据当前位置方向
        /// </summary>
        public string _dir_desc { get; set; }
    }
    #endregion

    /// <summary>
    /// 信息点
    /// </summary>
    public class PoisItem
    {
        /// <summary>
        /// 信息点ID
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 信息点台头
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 信息点所在地
        /// </summary>
        public string address { get; set; }
        /// <summary>
        /// 信息点种类
        /// </summary>
        public string category { get; set; }
        /// <summary>
        /// 信息点经纬度位置
        /// </summary>
        public Location location { get; set; }
        /// <summary>
        /// 信息点位置信息
        /// </summary>
        public Ad_info ad_info { get; set; }
        /// <summary>
        /// 距离当前经纬度的相对距离
        /// </summary>
        public int _distance { get; set; }
        /// <summary>
        /// 据当前位置方向
        /// </summary>
        public string _dir_desc { get; set; }
    }
}

Run运行,
跑起来就行,具体要什么,去相关类找就好了。

没有腾讯地图SDK的Key?

来,让小黑带你去找。

首先打开人家的官网腾讯位置服务 。

然后右上角登录 或者 注册

完成后,还是点击右上方的控制台

 然后创建一个应用

 创建完成后,增加一个key

接着你就有Key值了。然后拿着你的这个key添加到代码中,就ok了。 

至此,圆满结束。


希望大家:点赞,留言,关注咯~       😘😘😘😘


唠家常

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

今日无推荐

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐