⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.aspx.cs

📁 使用ASP.NET 2.0 (c#) 实现的gis 的地图系统
💻 CS
📖 第 1 页 / 共 5 页
字号:

                //				sb.Append( "<br>" + i.ToString() + ". <b>" + stopName + "</b> ;" );

                busLineItems = this.MapControl1.SpatialAnalystOperator.GetBuslineByStop(interChangeID);
                if (busLineItems != null)
                {
                    int buslineCount = busLineItems.Length;
                    for (int j = 0; j < buslineCount; j++)
                    {
                        string buslineName = busLineItems[j].Name;
                        int buslineSmID = busLineItems[j].SmID;
                        if (!string.IsNullOrEmpty(busLineItems[j].DirectionSign))
                        {
                            buslineName += "(" + busLineItems[j].DirectionSign + ")";
                        }
                        Microsoft.Web.UI.WebControls.TreeNode buslineNode = new Microsoft.Web.UI.WebControls.TreeNode();
                        buslineNode.Text = buslineName;
                        buslineNode.NodeData = buslineSmID.ToString(NumberFormatInfo.InvariantInfo);
                        stopNode.Nodes.Add(buslineNode);
                    }
                }
                this.treeBusResult.Nodes.Add(stopNode);
            }
            //			this.lblBusResult.Text += sb.ToString();

        }

        /// <summary>
        /// 公交线路查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnBusLineQuery_Click(object sender, System.EventArgs e)
        {
            SetBusToolboxActive();
            this.TreeShowType = "BusLine";
            this.treeBusResult.Nodes.Clear();
            this.treeBusResult.Visible = false;
            string fuzzyBusLineText = this.txtBusLineQuery.Text;
            if (string.IsNullOrEmpty(fuzzyBusLineText))
            {
                ShowAlertDialog("BusLineQuery", "请输入公交线路!");
                return;
            }
            BusLineItem[] buslineItems = this.MapControl1.SpatialAnalystOperator.FindBusline(fuzzyBusLineText);
            if (buslineItems == null)
            {
                ShowAlertDialog("BusLineQuery", "没有找到对应的线路!");
                return;
            }
            this.PanelBusSearch.Visible = false;
            this.PanelBusResult.Visible = true;
            this.treeBusResult.Visible = true;
            this.btnBusResultCancel.Visible = true;
            int buslineCount = buslineItems.Length;
            for (int i = 0; i < buslineCount; i++)
            {
                string buslineName = buslineItems[i].Name;
                int buslineID = buslineItems[i].ID;
                int buslineSmID = buslineItems[i].SmID;
                string directionSign = buslineItems[i].DirectionSign;
                if (!string.IsNullOrEmpty(directionSign))
                {
                    buslineName += "(" + directionSign + ")";
                }
                bool bForward;
                if (buslineItems[i].Direction == SuperMap.IS.Utility.BusLineDirection.Backward)
                {
                    bForward = false;
                }
                else
                {
                    bForward = true;
                }
                Microsoft.Web.UI.WebControls.TreeNode buslineNode = new Microsoft.Web.UI.WebControls.TreeNode();
                buslineNode.Text = buslineName;
                buslineNode.NodeData = buslineSmID.ToString(NumberFormatInfo.InvariantInfo);
                BusStopItem[] busStopItems = this.MapControl1.SpatialAnalystOperator.GetBusStopByLine(buslineID, bForward);
                if (busStopItems != null)
                {
                    int busStopCount = busStopItems.Length;
                    for (int j = 0; j < busStopCount; j++)
                    {
                        string stopName = busStopItems[j].Name;
                        int stopID = busStopItems[j].ID;
                        string stopNodeText = stopName + "(" + stopID + ")";
                        Microsoft.Web.UI.WebControls.TreeNode stopNode = new Microsoft.Web.UI.WebControls.TreeNode();
                        stopNode.Text = stopNodeText;
                        stopNode.NodeData = stopID.ToString(NumberFormatInfo.InvariantInfo);
                        buslineNode.Nodes.Add(stopNode);
                    }
                }
                this.treeBusResult.Nodes.Add(buslineNode);
            }
        }

        #endregion

        #region 公交方案查询(二次查询)
        /// <summary>
        /// 公交方案查询(二次查询)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnFindSolution_Click(object sender, System.EventArgs e)
        {
            // 设置公交层位于最上方。
            SetBusToolboxActive();

            if (this.lstBusStarts.Items.Count < 1 || this.lstBusEnds.Items.Count < 1)
            {
                return;
            }

            int startID, endID, transferTimes;
            int.TryParse(this.lstBusStarts.SelectedValue, out startID);
            int.TryParse(this.lstBusEnds.SelectedValue, out endID);
            int.TryParse(this.lstChangeTimes.SelectedValue, out transferTimes);
            bool bMost = this.checkBoxMostChange.Checked ? true : false;
            BusSolutionItem solution = this.MapControl1.SpatialAnalystOperator.GetBusSolution(startID, endID, transferTimes, bMost, 10);
            if (solution != null && solution.RoutingItems != null && solution.RoutingItems.Length > 0)
            {
                ShowBusSolutionResult(solution);
            }
            else
            {
                ShowBusSolutionResultNothing();
            }

            // 隐藏二次查询面板。
            this.panelBusStops.Visible = false;
        }

        #endregion

        #region 路径分析

        /// <summary>
        /// 路径分析之前的事件,设置网络分析参数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MapControl1_PathFinding(object sender, SuperMap.IS.WebControls.EventArguments.PathFindingEventArgs e)
        {
            e.Params.ReturnNodePositions = true;
            e.Params.ReturnEdgeIDsAndNodeIDs = true;
            e.Params.NetworkParams.NetworkSetting.NetworkLayerName = ConfigurationSettings.AppSettings["NetworkLayerName"];
            double.TryParse(ConfigurationSettings.AppSettings["PathFinding_Tolerance"], out e.Params.NetworkParams.Tolerance);
        }

        /// <summary>
        /// 路径分析完成后事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MapControl1_PathFound(object sender, SuperMap.IS.WebControls.EventArguments.PathFoundEventArgs e)
        {
            if (e.TotalLength > 0)
            {
                //				string strResult = string.Concat(e.TotalLength.ToString(), " ", MapControl1.CoordUnits.ToString());
                string strResult = string.Concat(e.TotalLength.ToString(), " ", ConfigurationSettings.AppSettings["CoordUnits"]);
                strResult += Environment.NewLine + "共经过 " + e.EdgeIDs.Length + " 条边, " + e.NodeIDs.Length + " 个中间节点。";
                this.DisplayResult(strResult);
            }
            else
            {
                this.DisplayResult(null);
            }
        }

        #endregion

        #region 图层可查询属性或可显示属性改变

        /// <summary>
        /// 图层可查询属性改变后事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MapControl1_LayerQueryableChanged(object sender, SuperMap.IS.WebControls.EventArguments.LayerChangedEventArgs e)
        {
            if (Page.IsPostBack)
            {
                SetLayerToolboxActive();
            }
        }

        /// <summary>
        /// 图层可显示属性改变后事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MapControl1_LayerVisibleChanged(object sender, SuperMap.IS.WebControls.EventArguments.LayerChangedEventArgs e)
        {
            if (Page.IsPostBack)
            {
                SetLayerToolboxActive();
            }
        }

        #endregion

        #region SetToolboxActive
        /// <summary>
        /// 设置公交分析层位于最上方。
        /// </summary>
        private void SetBusToolboxActive()
        {
            if (Page.IsStartupScriptRegistered("SetBusToolboxActive"))
            {
                return;
            }
            string SetBusToolboxActiveScript = "";
            SetBusToolboxActiveScript += "<SCRIPT language=javascript>";
            SetBusToolboxActiveScript += "	function SetBusToolboxActive(){";
            SetBusToolboxActiveScript += "	SwitchToolboxTab(3);";
            SetBusToolboxActiveScript += "	}";
            SetBusToolboxActiveScript += "</SCRIPT>";
            Page.RegisterClientScriptBlock("SetBusToolboxActiveScript", SetBusToolboxActiveScript);
            Page.RegisterStartupScript("SetBusToolboxActive", "<script language='javascript'>SetBusToolboxActive();</script>");
        }

        /// <summary>
        /// 设置图层控制层位于最上方。
        /// </summary>
        private void SetLayerToolboxActive()
        {
            if (Page.IsStartupScriptRegistered("SetLayerToolboxActive"))
            {
                return;
            }

            string SetLayerToolboxActiveScript = "";
            SetLayerToolboxActiveScript += "<SCRIPT language=javascript>";
            SetLayerToolboxActiveScript += "	function SetLayerToolboxActive(){";
            SetLayerToolboxActiveScript += "	SwitchToolboxTab(1);";
            SetLayerToolboxActiveScript += "	}";
            SetLayerToolboxActiveScript += "</SCRIPT>";
            Page.RegisterClientScriptBlock("SetLayerToolboxActiveScript", SetLayerToolboxActiveScript);
            Page.RegisterStartupScript("SetLayerToolboxActive", "<script language='javascript'>SetLayerToolboxActive();</script>");
        }

        /// <summary>
        /// 设置Edit层位于最上方。
        /// </summary>
        private void SetEditToolboxActive()
        {
            if (Page.IsStartupScriptRegistered("SetEditToolboxActive"))
            {
                return;
            }

            string SetEditToolboxActive = "";
            SetEditToolboxActive += "<SCRIPT language=javascript>";
            SetEditToolboxActive += "	function SetEditToolboxActive(){";
            SetEditToolboxActive += "	SwitchToolboxTab(4,2);";
            SetEditToolboxActive += "	}";
            SetEditToolboxActive += "</SCRIPT>";
            Page.RegisterClientScriptBlock("SetEditToolboxActive", SetEditToolboxActive);
            Page.RegisterStartupScript("SetEditToolboxActive", "<script language='javascript'>SetEditToolboxActive();</script>");
        }
        #endregion

        #region 公交结果treeview的当前选择项发生变化时。高亮公交线路或者公交站点。
        // 公交结果treeview的当前选择项发生变化时
        private void treeBusResult_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
        {
            //			try
            //			{
            //				SetBusToolboxActive();
            //				int newNode = Int32.Parse(e.NewNode);
            //				int busLineSmID = Int32.Parse(treeBusResult.Nodes[newNode].NodeData);
            //				this.MapControl1.SpatialAnalystOperator.ShowBusLine(busLineSmID);
            //			}
            //			catch
            //			{}
                    
            SetBusToolboxActive();
            Microsoft.Web.UI.WebControls.TreeNode treeNode = this.treeBusResult.GetNodeFromIndex(e.NewNode);
            if (treeNode != null)
            {
                if (this.TreeShowType != null && this.TreeShowType.Equals("Solution"))
                {
                    // 当TreeView为Solution的查询结果
                    if (treeNode.GetNodeIndex().IndexOf(".") == -1)
                    {
                        // 选择的是高亮方案
                        int routingIndex = int.Parse(treeNode.GetNodeIndex());
                        BusRoutingItem routing = this.BusSolutionRef.RoutingItems[routingIndex];
                        MapControl1.KeepHighlight = false;
                        MapControl1.SpatialAnalystOperator.ShowRouting(routing, m_busStopStyle, m_busLineStyle);
                        MapControl1.KeepHighlight = true;
                    }
                    else
                    {
                        if (treeNode.Parent != null)
                        {
                            Microsoft.Web.UI.WebControls.TreeNode pNode = (Microsoft.Web.UI.WebControls.TreeNode)treeNode.Parent;
                            if (pNode.GetNodeIndex().IndexOf(".") == -1)
                            {
                                // 选择高亮线路
                                int iBusLineSmID = int.Parse(treeNode.NodeData);
                                MapControl1.KeepHighlight = false;
                                this.MapControl1.SpatialAnalystOperator.ShowBusLine(iBusLineSmID, m_busLineStyle);
                        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -