• 集成腾讯位置服务到webapi


    经纬度转换为详细地址信息

    参考文档:http://lbs.qq.com/webservice_v1/guide-gcoder.html

    首先申请key,如果使用的是服务端请求webservice API ,申请密钥的时候要选择“服务端”,创建成功之后设置ip白名单,否则默认全部ip都可以使用的你的key。

    下面是我封装的工具类

        /// <summary>
        /// 腾讯地图经纬度转换帮助类
        /// 参考文档:http://lbs.qq.com/webservice_v1/guide-gcoder.html
        /// </summary>
        public class TencentMapHelper
        {
            /// <summary>
            /// 根据经纬度返回对应的城市信息
            /// </summary>
            /// <param name="location">纬度+,+经度:36.15849,120.42385</param>
            /// <returns>转化之后的地址</returns>
            public static TencentAddressModel GetAddress(string location)
            {
                var key = ConfigurationManager.AppSettings["mapkey"];
                var convertAddress = $"http://apis.map.qq.com/ws/geocoder/v1/?location={location}&key={key}";
                var res = HttpClientHelper.SendMessage(convertAddress);
                var ipModel = JObject.Parse(res).ToObject<TencentAddressModel>();
    
                return ipModel;
            }
        }
    
        /// <summary>
        /// 经纬度转换后得到的结果实体
        /// </summary>
        public class TencentAddressModel
        {
            /// <summary>
            /// 状态码,0为正常,
            /// 310请求参数信息有误,
            /// 311Key格式错误,
            /// 306请求有护持信息请检查字符串,
            /// 110请求来源未被授权
            /// </summary>
            public string status { set; get; }
    
            /// <summary>
            /// 状态说明
            /// </summary>
            public string message { set; get; }
    
            /// <summary>
            /// 逆地址解析结果
            /// </summary>
            public AddressModel result { set; get; }
    
            /// <summary>
            /// 转换之后的坐标。若有多个坐标,则用 “;”进行区分和间隔
            /// </summary>
            public string locations { set; get; }
    
        }
    
        /// <summary>
        /// result
        /// </summary>
        public class AddressModel
        {
            /// <summary>
            /// 地址描述
            /// </summary>
            public string address { set; get; }
    
            /// <summary>
            /// 位置描述
            /// </summary>
            public RegeModel formatted_addresses { set; get; }
    
            /// <summary>
            /// 地址部件,address不满足需求时可自行拼接
            /// </summary>
            public Component address_component { set; get; }
            
        }
    
        /// <summary>
        /// 位置描述
        /// </summary>
        public class RegeModel
        {
            /// <summary>
            /// 经过腾讯地图优化过的描述方式,更具人性化特点
            /// </summary>
            public string recommend { set; get; }
    
            /// <summary>
            /// 大致位置,可用于对位置的粗略描述
            /// </summary>
            public string rough { set; get; }
        }
    
        /// <summary>
        /// 地图组件
        /// </summary>
        public class Component
        {
            /// <summary>
            /// 国家
            /// </summary>
            public string nation { set; get; }
    
            /// <summary>
            ////// </summary>
            public string province { set; get; }
    
            /// <summary>
            ////// </summary>
            public string city { set; get; }
    
            /// <summary>
            /// 区,可能为空字串
            /// </summary>
            public string district { set; get; }
    
            /// <summary>
            /// 街道,可能为空字串
            /// </summary>
            public string street { set; get; }
    
            /// <summary>
            /// 门牌,可能为空字串
            /// </summary>
            public string street_number { set; get; }
        }

    反射的实体只是写了我自己需要的字段,大家可以加上自己需要的字段,就可以直接使用了。

    上面的代码只是把经纬转化为详细地址信息,大家如果有别的需求可以自己修改。重在分享。

  • 相关阅读:
    thinkphp 学习1-模型
    apache 2.4目录权限
    标头 header()函数的用法
    PHP面试题一
    php学习
    如何执行超过一百兆(100MB)的sql脚本?
    jquery-numberformatter插件
    xpath 获取父级,和同级
    Vue el-table 行编辑验证、重置
    Vue 弹窗一个新增编辑页面
  • 原文地址:https://www.cnblogs.com/dawenyang/p/9018728.html
Copyright © 2020-2023  润新知