Пример #1
0
        public void Btn_Submit(string startPos, string stopPos)
        {
            pntList = new List <Point>();
            Point pnt = new Point(centerInfo.X, centerInfo.Y);

            pntList.Add(pnt);
            curRoad = new BusRoad(this.MarkLayer, this.GraphicsLayer);
            curRoad.AddNode(centerInfo.MarketName, centerInfo.X, centerInfo.Y, "../images/bus/stop.PNG");
            for (int i = 0; i < stopsData.Count; i++)
            {
                pnt = new Point(stopsData[i].X, stopsData[i].Y);
                pntList.Add(pnt);
                curRoad.AddNode(stopsData[i].StopName, stopsData[i].X, stopsData[i].Y, "../images/bus/stop.PNG");
            }

            pnt = new Point(marketInfo.X, marketInfo.Y);
            pntList.Add(pnt);
            IMSPolyline line = new IMSPolyline(ZDIMS.Interface.CoordinateType.Logic);

            line.Points          = pntList;
            line.StrokeThickness = 2;
            line.Stroke          = new SolidColorBrush(Colors.Red);
            line.Draw();
            this.GraphicsLayer.AddGraphics(line);

            curRoad.AddNode(marketInfo.MarketName, marketInfo.X, marketInfo.Y, "../images/bus/stop.PNG");
            this.Show();
        }
Пример #2
0
        private void button_showHistoryPath_Click(object sender, RoutedEventArgs e)
        {
            if (pathLayer == null)
            {
                pathLayer = new GraphicsLayer();
                this.MapContainer.AddChild(pathLayer);
            }
            if (historyPath == null)
            {
                historyPath = new IMSPolyline(CoordinateType.Logic);
                this.pathLayer.AddGraphics(historyPath);
            }
            string startTime = string.Format("{0} {1}", this.datePicker1.SelectedDate.Value.ToShortDateString(), this.timePicker1.Value.Value.ToLongTimeString());
            string endTime = string.Format("{0} {1}", this.datePicker2.SelectedDate.Value.ToShortDateString(), this.timePicker2.Value.Value.ToLongTimeString());
            string url = string.Format("{0}?method=getHistoryPath&gpsType=GPRMC&beginTime={1}&endTime={2}&PDevice={3}&rnd={4}", this.m_gpsSvcUrl, startTime,endTime,this.device, Guid.NewGuid().ToString());
			WebClient cli = new WebClient();
            cli.AllowReadStreamBuffering = true;
            cli.OpenReadCompleted+= new OpenReadCompletedEventHandler(OnGetHistoryPath);
            try
            {
                cli.OpenReadAsync(new Uri(url));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            historyPath.Visibility = Visibility.Visible;
        }
Пример #3
0
 public void Draw()
 {
     if (GraphicsLayer != null && RoadCoorArr.Length > 0)
     {
         if (m_road == null)
         {
             m_road = new IMSPolyline(CoordinateType.Logic);
             m_road.Shape.Stroke = new SolidColorBrush(Colors.Red);
             GraphicsLayer.AddGraphics(m_road);
         }
         for (int i = 0; i < RoadCoorArr.Length - 1; i += 2)
         {
             if (RoadCoorArr[i].Length > 0 && RoadCoorArr[i + 1].Length > 0)
             {
                 m_road.Points.Add(new Point(Convert.ToDouble(RoadCoorArr[i]), Convert.ToDouble(RoadCoorArr[i + 1])));
             }
         }
         m_road.Draw();
         for (int i = 0; i < m_stopList.Count; i++)
         {
             MarkLayer.AddMark(m_stopList[i]);
             m_stopList[i].RevisedPosition();
         }
         this.GraphicsLayer.MapContainer.PanTo(Convert.ToDouble(RoadCoorArr[0]), Convert.ToDouble(RoadCoorArr[1]));
     }
 }
        public void Btn_Submit(string startPos, string stopPos)
        {
            pntList = new List <Point>();
            Point pnt = new Point(centerInfo.X, centerInfo.Y);

            pntList.Add(pnt);
            curRoad = new BusRoad(this.MarkLayer, this.GraphicsLayer);
            curRoad.AddNode(centerInfo.MarketName, centerInfo.X, centerInfo.Y, "../images/bus/stop.PNG");
            for (int i = 0; i < stopsData.Count; i++)
            {
                pnt = new Point(stopsData[i].X, stopsData[i].Y);
                pntList.Add(pnt);
                curRoad.AddNode(stopsData[i].StopName, stopsData[i].X, stopsData[i].Y, "../images/bus/stop.PNG");
            }

            pnt = new Point(marketInfo.X, marketInfo.Y);
            pntList.Add(pnt);
            IMSPolyline line = new IMSPolyline();

            line.Points          = pntList;
            line.StrokeThickness = 2;
            line.Draw();
            this.GraphicsLayer.AddGraphics(line);
            curRoad.AddNode(marketInfo.MarketName, marketInfo.X, marketInfo.Y, "../images/bus/stop.PNG");
            //trackplaycontrol track = new trackplaycontrol();
            //track.MarkLayer = this.MarkLayer;
            //track.Points = pntList;

            // track.Show();
            //GetBusChangeRlt(startPos, stopPos, new UploadStringCompletedEventHandler(OnGetBusRlt));
        }
Пример #5
0
        public void setstopsData()
        {
            List <stops> list = new List <stops>();
            stops        tmp  = new stops();

            tmp.X        = 12728647.712585449;
            tmp.Y        = 3579603.3365478516;
            tmp.StopName = "团结村";
            list.Add(tmp);

            tmp          = new stops();
            tmp.X        = 12729488.519714356;
            tmp.Y        = 3578924.9580688477;
            tmp.StopName = "徐东大街";
            list.Add(tmp);


            tmp          = new stops();
            tmp.X        = 12730635.074890137;
            tmp.Y        = 3577921.7222900391;
            tmp.StopName = "徐东大街";
            list.Add(tmp);


            tmp          = new stops();
            tmp.X        = 12731867.621704102;
            tmp.Y        = 3577596.8649902344;
            tmp.StopName = "东湖路";
            list.Add(tmp);

            stopsData = new List <stops>();
            pntList   = new List <Point>();
            stopsData = list;
            Point pnt;

            curRoad = new BusRoad(this.markLayer1, this.graphicsLayer1);
            for (int i = 0; i < stopsData.Count; i++)
            {
                pnt = new Point(stopsData[i].X, stopsData[i].Y);
                pntList.Add(pnt);
                curRoad.AddNode(stopsData[i].StopName, stopsData[i].X, stopsData[i].Y, "../images/bus/stop.PNG");
            }

            IMSPolyline line = new IMSPolyline(CoordinateType.Logic);

            line.Points          = pntList;
            line.Stroke          = new SolidColorBrush(Colors.Red);
            line.StrokeThickness = 2;
            line.Draw();
            line.Flicker();
            this.graphicsLayer1.AddGraphics(line);
            this.iMSMap1.SetCenter(pntList[0].X, pntList[0].Y);
            //return list;
        }
 private void ClearRoad()
 {
     if (m_road != null && GraphicsLayer != null)
     {
         GraphicsLayer.RemoveGraphics(m_road);
         m_road = null;
     }
     if (this.m_markLayer != null)
     {
         for (int i = 0; i < m_stopList.Count; i++)
         {
             m_markLayer.RemoveMark(m_stopList[i]);
         }
         m_stopList.Clear();
     }
 }
Пример #7
0
 public void Clear()
 {
     if (m_road != null && GraphicsLayer != null)
     {
         GraphicsLayer.RemoveGraphics(m_road);
         m_road = null;
     }
     if (MarkLayer != null)
     {
         for (int i = 0; i < m_stopList.Count; i++)
         {
             MarkLayer.RemoveMark(m_stopList[i]);
         }
         //m_stopList.Clear();
     }
 }
Пример #8
0
        private void OnGetPosInfo(Object sender,OpenReadCompletedEventArgs e)
        {
            if(e.Error!=null)
            {
                MessageBox.Show(e.Error.Message);
                return;
            }
            StreamReader sr=new StreamReader(e.Result);
            string gpsinfo=sr.ReadToEnd();
			if(gpsinfo==null||gpsinfo=="")
				return;
			string[] infoArray = gpsinfo.Split('*');
			if(infoArray.Length < 2)
			{
				return;
			}
			string[] colName = infoArray[0].Split(',');
			string[] row = infoArray[1].Split(',');
            for(int i = 0;i < colName.Length;i++)
            {
                if (colName[i] == "PLon")
                {
                    this.lastPlon = PLon;
                    this.PLon = Convert.ToDouble(row[i]) / 100;
                }
                if (colName[i] == "PLat")
                {
                    this.lastPLat = PLat;
                    this.PLat = Convert.ToDouble(row[i]) / 100;
                }
            }
            context.Post(ShowMarker,null);	
            //绘制轨迹
            if(pathLayer==null)
            {
                pathLayer = new GraphicsLayer();
                this.MapContainer.AddChild(pathLayer);
            }
            if (pathLine == null)
            {
                pathLine = new IMSPolyline(CoordinateType.Logic);
                this.pathLayer.AddGraphics(pathLine);
            }
            pathLine.Points.Add(new Point(this.PLon, this.PLat));
            pathLine.Visibility = this.checkBox3.IsChecked.Value?Visibility.Visible:Visibility.Collapsed;
            this.m_timer.Start();
        }
        private void OnSubmit(object sender, UploadStringCompletedEventArgs e)
        {
            LinePnts = new List <Point>();
            CPathAnalyzeResult obj = _spatial.OnNetAnalyse(e);

            if (obj == null || obj.Paths == null)
            {
                return;
            }
            CNetPath  path        = obj.Paths[0];
            int       edgeNum     = path.Edges.Length;
            Paragraph myParagraph = new Paragraph();

            myParagraph.Inlines.Add(new Run()
            {
                Text = "1.从起点出发"
            });
            Bold       bold;
            IMSMark    mark;
            StackPanel panel;

            for (int i = 0; i < edgeNum; i++)
            {
                CNetEdge edge = path.Edges[i];
                if (i != 0)
                {
                    myParagraph.Inlines.Add(new Run()
                    {
                        Text = (i + 1).ToString() + "."
                    });
                }
                myParagraph.Inlines.Add(new Run()
                {
                    Text = "经"
                });
                bold = new Bold()
                {
                    Foreground = new SolidColorBrush(Colors.Red)
                };
                bold.Inlines.Add(edge.FieldValus[2]);
                myParagraph.Inlines.Add(bold);
                if (i != edgeNum - 1)
                {
                    myParagraph.Inlines.Add(new Run()
                    {
                        Text = "到达"
                    });
                    bold = new Bold()
                    {
                        Foreground = new SolidColorBrush(Colors.Red)
                    };
                    bold.Inlines.Add(path.Nodes[i + 1].FieldValus[0] + "\n");
                    myParagraph.Inlines.Add(bold);
                }
                else
                {
                    myParagraph.Inlines.Add(new Run()
                    {
                        Text = "到达终点"
                    });
                }
                if (GraphicsLayer != null)
                {
                    if (m_road == null)
                    {
                        m_road = new IMSPolyline(CoordinateType.Logic);
                        m_road.Shape.Stroke = new SolidColorBrush(Colors.Red);
                        GraphicsLayer.AddGraphics(m_road);
                    }
                    for (int j = 0; j < edge.Dots.Length; j++)
                    {
                        m_road.Points.Add(new Point(edge.Dots[j].x, edge.Dots[j].y));
                        LinePnts.Add(new Point(edge.Dots[j].x, edge.Dots[j].y));
                    }
                    panel = new StackPanel()
                    {
                        Orientation = Orientation.Horizontal
                    };
                    panel.Children.Add(new Image()
                    {
                        Source = new BitmapImage(new Uri("/images/bus/stop.png", UriKind.Relative))
                    });
                    panel.Children.Add(new TextBlock()
                    {
                        Text = edge.FieldValus[2]
                    });
                    mark = new IMSMark(panel, CoordinateType.Logic)
                    {
                        EnableDrag = false, EnableAnimation = false
                    };
                    mark.X = edge.Dots[edge.Dots.Length / 2].x;
                    mark.Y = edge.Dots[edge.Dots.Length / 2].y;
                    m_markLayer.AddMark(mark);
                    m_stopList.Add(mark);
                }
            }
            m_road.Draw();
            if (netWindow == null)
            {
                netWindow = new NetWindow();
            }
            if (netWindow != null)
            {
                this.netWindow.g_graphicLayer = this.GraphicsLayer;
                this.netWindow.m_markLayer    = this.m_markLayer;
                this.netWindow.OgicPnts       = this.LinePnts;
                netWindow.Show();
                this.netWindow.Margin = new Thickness(0, 120, 0, 0);
                this.netWindow.HorizontalAlignment = HorizontalAlignment.Right;
                this.netWindow.roadReslut.Blocks.Add(myParagraph);
            }
            SuccessFlag = true;
        }
Пример #10
0
        private void OnSubmit(object sender, UploadStringCompletedEventArgs e)
        {
            ClearRoad();
            roadReslut.Blocks.Clear();
            if (e.Error != null)
            {
                MessageBox.Show("分析失败,错误原因为:" + e.Error.Message, "提示", MessageBoxButton.OK);
                return;
            }
            try
            {
                if (e.Result.IndexOf("COperResult") > -1)
                {
                    COperResult res = VectorObj.GetObject(e, typeof(COperResult)) as COperResult;
                    MessageBox.Show(res.ErrorInfo, "提示", MessageBoxButton.OK);
                    return;
                }
                CPathAnalyzeResult obj = _spatial.OnNetAnalyse(e);
                if (obj == null || obj.Paths == null)
                {
                    return;
                }
                CNetPath  path        = obj.Paths[0];
                int       edgeNum     = path.Edges.Length;
                Paragraph myParagraph = new Paragraph();
                myParagraph.Inlines.Add(new Run()
                {
                    Text = "1.从起点出发"
                });
                Bold       bold;
                IMSMark    mark;
                StackPanel panel;
                for (int i = 0; i < edgeNum; i++)
                {
                    CNetEdge edge = path.Edges[i];
                    if (i != 0)
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = (i + 1).ToString() + "."
                        });
                    }
                    myParagraph.Inlines.Add(new Run()
                    {
                        Text = "经"
                    });
                    bold = new Bold()
                    {
                        Foreground = new SolidColorBrush(Colors.Red)
                    };
                    bold.Inlines.Add(edge.FieldValus[2]);
                    myParagraph.Inlines.Add(bold);
                    if (i != edgeNum - 1)
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = "到达"
                        });
                        bold = new Bold()
                        {
                            Foreground = new SolidColorBrush(Colors.Red)
                        };
                        bold.Inlines.Add(path.Nodes[i + 1].FieldValus[0] + "\n");
                        myParagraph.Inlines.Add(bold);
                    }
                    else
                    {
                        myParagraph.Inlines.Add(new Run()
                        {
                            Text = "到达终点"
                        });
                    }
                    if (GraphicsLayer != null)
                    {
                        if (m_road == null)
                        {
                            m_road = new IMSPolyline(CoordinateType.Logic);
                            m_road.Shape.Stroke = new SolidColorBrush(Colors.Red);
                            GraphicsLayer.AddGraphics(m_road);
                        }
                        for (int j = 0; j < edge.Dots.Length; j++)
                        {
                            m_road.Points.Add(new Point(edge.Dots[j].x, edge.Dots[j].y));
                        }
                        panel = new StackPanel()
                        {
                            Orientation = Orientation.Horizontal
                        };
                        panel.Children.Add(new Image()
                        {
                            Source = new BitmapImage(new Uri("../images/bus/stop.png", UriKind.Relative))
                        });
                        panel.Children.Add(new TextBlock()
                        {
                            Text = edge.FieldValus[2]
                        });
                        mark = new IMSMark(panel, CoordinateType.Logic, MarkLayer)
                        {
                            EnableAnimation = false, EnableDrag = false
                        };
                        mark.X = edge.Dots[edge.Dots.Length / 2].x;
                        mark.Y = edge.Dots[edge.Dots.Length / 2].y;
                        MarkLayer.AddMark(mark);
                        m_stopList.Add(mark);
                    }
                }


                m_road.Draw();
                roadReslut.Blocks.Add(myParagraph);
                radioButton1.IsChecked = false;
                radioButton2.IsChecked = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "提示", MessageBoxButton.OK);
            }
        }
Пример #11
0
        private void reDrawMeasurePnts(GraphicsLayer gLayer, IGraphics graphics, List <Point> logPntArr)
        {
            IsDrawOver = true;
            this.m_graphicsLayer.RemoveGraphics(this.measurePnts[this.measurePnts.Count - 1]);
            this.measurePnts.RemoveAt(this.measurePnts.Count - 1);
            if (this.measureMarks != null && this.measureMarks.Count != 0)
            {
                this.mymarklayer.RemoveMark(this.measureMarks[this.measureMarks.Count - 1]);
                this.measureMarks.RemoveAt(this.measureMarks.Count - 1);
            }
            if (this.measureCenterMarks != null && this.measureCenterMarks.Count != 0)
            {
                this.mymarklayer.RemoveMark(this.measureCenterMarks[this.measureCenterMarks.Count - 1]);
                this.measureCenterMarks.RemoveAt(this.measureCenterMarks.Count - 1);

                this.mymarklayer.RemoveMark(this.measureCenterMarks[this.measureCenterMarks.Count - 1]);
                this.measureCenterMarks.RemoveAt(this.measureCenterMarks.Count - 1);
            }
            switch (graphics.DrawingType)
            {
            case DrawingType.Polyline:
                IMSPolyline pl = new IMSPolyline(CoordinateType.Logic)
                {
                    EnableEdit = true
                };
                this.m_graphicsLayer.AddGraphics(pl);
                for (int i = 0; i < logPntArr.Count; i++)
                {
                    pl.Points.Add(logPntArr[i]);
                }
                pl.Draw();

                pl.EditMark1DragInCallback   += new EditMarkDelegate(markLengthMove);
                pl.EditMark1DragOverCallback += new EditMarkDelegate(markOver);
                pl.EditMark2DragInCallback   += new EditMarkDelegate(mark2LengthMove);
                pl.EditMark2DragOverCallback += new EditMarkDelegate(mark2LengthOver);
                pl.EnableEdit = false;
                measureGraphic.Add(pl);
                break;

            case DrawingType.Polygon:
                IMSPolygon p2 = new IMSPolygon(CoordinateType.Logic)
                {
                    EnableEdit = true
                };
                this.m_graphicsLayer.AddGraphics(p2);
                for (int i = 0; i < logPntArr.Count; i++)
                {
                    p2.Points.Add(logPntArr[i]);
                }
                p2.Draw();
                p2.EditMark1DragInCallback   += new EditMarkDelegate(markAreaMove);
                p2.EditMark1DragOverCallback += new EditMarkDelegate(markOver);
                p2.EnableEdit = false;
                measureGraphic.Add(p2);
                break;
            }
            //   if (this.measureMark != null)
            //   {
            //   (this.measureMark.MarkControl as Label).Content = "";
            //    (this.measureMark.MarkControl as Label).Visibility = System.Windows.Visibility.Collapsed;
            //   }
            //    if (this.measurePnts != null)
            //     {
            //        for (int i = 0; i < this.measurePnts.Count; i++)
            //        {
            //            this.m_graphicsLayer.RemoveGraphics(this.measurePnts[i]);
            //       }
            //   }
            this.m_mapContainer.MouseMove -= new MouseEventHandler(m_graphicsLayer_MouseMove);
        }