예제 #1
0
        public void FitToMarkers()
        {
            var rect = _gmapControl.GetRectOfAllMarkers(StandardOverlayName);

            if (rect != null)
            {
                _gmapControl.SetZoomToFitRect(rect.Value);
                UpdateCurrentCoords();
            }
        }
예제 #2
0
        public void ShowAll()
        {
            if (_gMap == null)
            {
                return;
            }

            var rect = GetRectOfAllMarkers();

            if (rect.HasValue &&
                !double.IsNaN(rect.Value.Lat) && !double.IsInfinity(rect.Value.Lat) &&
                !double.IsNaN(rect.Value.Lng) && !double.IsInfinity(rect.Value.Lng) &&
                !double.IsNaN(rect.Value.WidthLng) && !double.IsInfinity(rect.Value.WidthLng) &&
                !double.IsNaN(rect.Value.HeightLat) && !double.IsInfinity(rect.Value.HeightLat) &&
                RectLatLng.FromLTRB(-180, 90, 180, -90).Contains(rect.Value))
            {
                _gMap.SetZoomToFitRect(rect.Value);
            }
        }
예제 #3
0
        /// <summary>
        /// 按单位加载场地
        /// </summary>
        /// <param name="ub"></param>
        /// <param name="gMapCtrl"></param>
        public static void ZoomToSiteByUnit(UnitInfoBean ub, GMapControl gMapCtrl)
        {
            try
            {
                ClearAllSiteMarker(gMapCtrl);
                if (IsLayerExisted("unitlayer", gMapCtrl))
                {
                    GetOverlay("unitlayer", gMapCtrl).Polygons.Clear();
                }

                List <SiteBean> sblist = SiteBll.Instance.GetWhere(new { UNITCODE = ub.UnitCode }).ToList();//获取数据

                //DataTable sitedb = SiteBll.Instance.GetDataTable("select UNITCODE,SITECODE,SITENAME,SITETYPE,HISTORYSITE," +
                //    "LONGTITUDE,LATITUDE,ALTITUDE,PLACE,FAULTCODE,STARTDATE,SITESTATUS,MARKSTONETYPE,BUILDUNIT,OBSUNIT," +
                //    "SITESITUATION,GEOSITUATION,NOTE,LOCATIONS,OTHERSITUATION,DATACHG,XZQCODE,OBSCYC from t_siteinfodb where UNITCODE='" + ub.UnitCode + "'");

                //ModelHandler<SiteBean> mh = new ModelHandler<SiteBean>();

                //foreach (DataRow dr in sitedb.Rows)
                //{
                //    sblist.Add(mh.FillModel(dr));
                //}
                if (sblist == null)
                {
                    return;
                }
                if (sblist.Count == 0)
                {
                    return;
                }

                List <PointLatLng> plllist = new List <PointLatLng>();

                #region 获取最大最小角点坐标

                double minlat = double.MaxValue;
                double minlgt = double.MaxValue;
                double maxlat = double.MinValue;
                double maxlgt = double.MinValue;

                foreach (SiteBean sb in sblist)
                {
                    if (sb.Latitude == 0 || sb.Longtitude == 0)
                    {
                        continue;
                    }
                    if (sb.Latitude < minlat)
                    {
                        minlat = sb.Latitude;
                    }
                    if (sb.Longtitude < minlgt)
                    {
                        minlgt = sb.Longtitude;
                    }
                    if (sb.Latitude > maxlat)
                    {
                        maxlat = sb.Latitude;
                    }
                    if (sb.Longtitude > maxlgt)
                    {
                        maxlgt = sb.Longtitude;
                    }
                }
                minlat = minlat - 0.2;
                minlgt = minlgt - 0.2;
                maxlat = maxlat + 0.2;
                maxlgt = maxlgt + 0.2;

                #endregion

                plllist.Add(new PointLatLng(minlat, minlgt));
                plllist.Add(new PointLatLng(maxlat, minlgt));
                plllist.Add(new PointLatLng(maxlat, maxlgt));
                plllist.Add(new PointLatLng(minlat, maxlgt));

                // GMapPolygon gmp = new GMapPolygon(plllist, ub.UnitName);
                //GMapOverlay unitOverlay = IsLayerExisted("unitlayer", gMapCtrl) ? GetOverlay("unitlayer", gMapCtrl) : new GMapOverlay("unitlayer");

                //Pen pen = new Pen(Color.Red, 2);
                //pen.DashStyle = DashStyle.DashDot;
                //pen.DashPattern = new float[] { 1f, 1f };

                //gmp.Stroke = pen;
                //gmp.Fill = new SolidBrush(Color.FromArgb(50, Color.LightBlue));

                //if (!IsLayerExisted("unitlayer", gMapCtrl))
                //    gMapCtrl.Overlays.Add(unitOverlay);

                // unitOverlay.Polygons.Add(gmp);


                AddSiteMarker(sblist, gMapCtrl);

                gMapCtrl.SetZoomToFitRect(new RectLatLng(maxlat, minlgt, maxlgt - minlgt, maxlat - minlat));
            }
            catch (Exception ex)
            {
            }
        }