/// <summary> /// 显示覆盖物信息 /// </summary> /// <param name="intIndex">图片索引</param> /// <param name="dblLon">经度</param> /// <param name="dblLat">纬度</param> /// <param name="intMapLevel">地图显示等级</param> public void DisplayMulchImage(int intIndex, double dblLon, double dblLat, int intMapLevel) { if (picsDisplayMulchList != null) { PointD pointDisplatPos = new PointD(dblLon, dblLat); PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 picsDisplayMulchList[intIndex].Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - 8), Convert.ToInt32(picMap.Height / 2 + p.Y - 8)); picsDisplayMulchList[intIndex].Visible = true; PointAndLevel pl = new PointAndLevel(); pl.lon = dblLon; pl.lat = dblLat; pl.intMapLevel = intMapLevel; picsDisplayMulchList[intIndex].Tag = pl; } }
/// <summary> /// 显示地图 /// </summary> private void DisplayMap() { if (mapMain != null) { picMap.Image = mapMain.GetMapImage(pointCurrentMapCenter, picMap.Size, CurrentMapLevel); if (dicPicValue != null && dicPicValue.Count > 0) { foreach (PictureBox pic in dicPicValue.Values) { if (pic != null && pic.Visible == true && pic.Parent == picMap) { MapPointInfo point = (MapPointInfo)pic.Tag; PointD pointDisplatPos = new PointD(point.dblLon, point.dblLat); PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 pic.Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - pic.Width / 2), Convert.ToInt32(picMap.Height / 2 + p.Y - pic.Height)); } } } if (dicLabel != null && dicLabel.Count > 0) { foreach (Label pic in dicLabel.Values) { if (pic != null && pic.Visible == true && pic.Parent == picMap) { MapPointInfo point = (MapPointInfo)pic.Tag; PointD pointDisplatPos = new PointD(point.dblLon, point.dblLat); PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 pic.Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - pic.Width / 2), Convert.ToInt32(picMap.Height / 2 + p.Y - pic.Height) + 32); } } } if (picsDisplayPointList != null && picsDisplayPointList.Length > 0) { //存在显示点 foreach (PictureBox pic in picsDisplayPointList) { if (pic != null && pic.Visible == true && pic.Tag != null && pic.Parent == picMap) { PointD pointDisplatPos = (PointD)pic.Tag; PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 pic.Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - 8), Convert.ToInt32(picMap.Height / 2 + p.Y - 8)); } } } if (picsDisplayMulchList != null && picsDisplayMulchList.Length > 0) { //存在显示区域 foreach (PictureBox pic in picsDisplayMulchList) { if (pic != null && pic.Visible == true && pic.Tag != null && pic.Parent == picMap) { //PointD pointDisplatPos = (PointD)pic.Tag; //PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 //pic.Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - 8), Convert.ToInt32(picMap.Height / 2 + p.Y - 8)); PointAndLevel pl = (PointAndLevel)pic.Tag; PointD pointDisplatPos = new PointD(pl.lon, pl.lat); PointD p = mapMain.WorldToImage(pointCurrentMapCenter, pointDisplatPos, CurrentMapLevel); //计算点在地图上的位置 pic.Location = new Point(Convert.ToInt32(picMap.Width / 2 + p.X - 8), Convert.ToInt32(picMap.Height / 2 + p.Y - 8)); //整体思路 //1.添加时设置显示等级,及默认大小 //2.在显示地图是判断当前等级及显示等级大小(比较) //3.根据比较结果放大或者缩小图片 int intDisplayMapLevel = pl.intMapLevel; //正数表示需要放大 0表示当前等级正常 负数表示需要缩小 以300px 为基准 Size sizeBasic = new Size(300, 300); int intDisparity = intCurrentMapLevel - intDisplayMapLevel; if (intDisparity > 0) { //放大 double Temp_dbl = Math.Pow(2, intDisparity); sizeBasic = new Size(Convert.ToInt32(300 * Temp_dbl), Convert.ToInt32(300 * Temp_dbl)); } else if (intDisparity < 0) { //缩小 intDisparity = Math.Abs(intDisparity); double Temp_dbl = Math.Pow(2, intDisparity); sizeBasic = new Size(Convert.ToInt32(300 / Temp_dbl), Convert.ToInt32(300 / Temp_dbl)); } else if (intDisparity == 0) { //默认值 pic.Size = sizeBasic; } pic.Size = sizeBasic; } } } Display(pointCurrentMapCenter.X, pointCurrentMapCenter.Y, intCurrentMapLevel, ""); } }