private void 显示行政区(M行政区位置 __行政区) { this.out地图.Position = new PointLatLng(__行政区.纬度, __行政区.经度); //绘制边界 _边界图层.Routes.Clear(); var __位置列表 = new List <PointLatLng>(); __行政区.边界坐标.ForEach(__点列表 => { var __GPS = new List <PointLatLng>(); __点列表.ForEach(q => { //double __谷歌经度 = q.Lng; //double __谷歌纬度 = q.Lat; //HGPS坐标转换.百度坐标转谷歌坐标(q.Lat, q.Lng, out __谷歌纬度, out __谷歌经度); //__GPS.Add(new PointLatLng(__谷歌纬度, __谷歌经度)); if (!Equals(_当前地图, GMapProviders.BaiduMap)) { __GPS.Add(H坐标转换.bd09_To_Gcj02(q.Lat, q.Lng)); } else { __GPS.Add(q); } }); __位置列表.AddRange(__GPS); var __线 = new GMapRoute(__GPS, "") { Stroke = new Pen(Color.Blue) { Width = 2, } }; _边界图层.Routes.Add(__线); }); if (__位置列表.Count > 0) { double __最小经度 = 180; double __最大经度 = -180; double __最小纬度 = 90; double __最大纬度 = -90; __位置列表.ForEach(q => { __最小经度 = Math.Min(__最小经度, q.Lng); __最大经度 = Math.Max(__最大经度, q.Lng); __最小纬度 = Math.Min(__最小纬度, q.Lat); __最大纬度 = Math.Max(__最大纬度, q.Lat); }); this.out地图.SetZoomToFitRect(RectLatLng.FromLTRB(__最小经度, __最大纬度, __最大经度, __最小纬度)); } }
private static void 读取数据() { var _程序目录 = Path.GetDirectoryName(Assembly.GetEntryAssembly().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 => new PointLatLng(double.Parse(k.Split(',')[1]), double.Parse(k.Split(',')[0]))) .ToList())); } } }