Пример #1
0
        public static M经纬度 地址编码(string __位置, string __城市 = null)
        {
            string __url = "";
            string __返回值 = "";

            if (string.IsNullOrEmpty(__城市))
            {
                __url = "http://api.map.baidu.com/geocoder/v2/?ak={0}&output=json&address={1}";
                __返回值 = Web服务请求(string.Format(__url, _ak, HttpUtility.UrlEncode(__位置)));
            }
            else
            {
                __url = "http://api.map.baidu.com/geocoder/v2/?ak={0}&output=json&address={1}&city={2}";
                __返回值 = Web服务请求(string.Format(__url, _ak, HttpUtility.UrlEncode(__位置), __城市));
            }
            var __JS序列化器 = new JavaScriptSerializer();
            var __结果     = __JS序列化器.Deserialize <M地址编码结果>(__返回值);

            if (__结果.status != 0)
            {
                return(null);
            }
            var __百度坐标 = new M经纬度(__结果.result.location.lng, __结果.result.location.lat)
            {
                类型 = E坐标类型.百度
            };

            return(HGPS坐标转换.百度坐标转谷歌坐标(__百度坐标));
        }
Пример #2
0
        private static M经纬度 转换成谷歌坐标(M经纬度 __原经纬度)
        {
            M经纬度 __结果 = __原经纬度;

            if (__原经纬度.类型 == E坐标类型.百度)
            {
                __结果 = HGPS坐标转换.百度坐标转谷歌坐标(__原经纬度);
            }
            else if (__原经纬度.类型 == E坐标类型.设备)
            {
                __结果 = HGPS坐标转换.原始坐标转谷歌坐标(__原经纬度);
            }
            return(__结果);
        }
Пример #3
0
        static void 读取数据()
        {
            var _程序目录    = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location);
            var __压缩文件路径 = Path.Combine(_程序目录, "行政区.gz");
            var __字节流    = 解压(__压缩文件路径);
            int _起始位置    = 0;

            //检测文件是否有bom头
            if (__字节流[0] == 0xef && __字节流[1] == 0xbb && __字节流[2] == 0xbf)
            {
                _起始位置 = 3;
            }
            var __所有行 = Encoding.UTF8.GetString(__字节流, _起始位置, __字节流.Length - _起始位置).Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < __所有行.Length; i++)
            {
                var __属性 = __所有行[i].Split(new char[] { ',' }, 6);
                if (__属性.Length < 5)
                {
                    continue;
                }
                var __行政区 = new M行政区位置
                {
                    省  = __属性[0],
                    市  = __属性[1],
                    区  = __属性[2],
                    经度 = double.Parse(__属性[3]),
                    纬度 = double.Parse(__属性[4])
                };
                _缓存.Add(__行政区);
                if (__属性.Length == 6)
                {
                    var __边界坐标描述 = __属性[5];
                    __边界坐标描述.Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries)
                    .ToList()
                    .ForEach(q => __行政区.边界坐标.Add(q.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
                                                 .Select(
                                                     k => HGPS坐标转换.百度坐标转谷歌坐标(new M经纬度(double.Parse(k.Split(',')[0]), double.Parse(k.Split(',')[1]))
                    {
                        类型 = E坐标类型.百度
                    }))
                                                 .ToList()));
                }
            }
        }