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

📄 formpocketearth.cs

📁 在windows mobile 5上的地图查看器
💻 CS
📖 第 1 页 / 共 2 页
字号:
            MenuItem mi;

            // Find the menu item that corresponds to the specified zoom level
            // so we can put a checkmark next to that menu item when it is displayed.
            switch (zoomLevel)
            {
                case 3: mi = menuZoom1; break;
                case 5: mi = menuZoom2; break;
                case 7: mi = menuZoom3; break;
                case 9: mi = menuZoom4; break;
                case 11: mi = menuZoom5; break;
                case 13: mi = menuZoom6; break;
                case 15: mi = menuZoom7; break;
                case 17: mi = menuZoom8; break;
                case 19: mi = menuZoom9; break;
                default: throw new ArgumentException("Zoom level is invalid.", "zoomLevel");
            }
            Zoom(zoomLevel, mi);
        }


        /// <summary>
        /// Handle any zoom menu item.
        /// </summary>
        /// <param name="zoomLevel">The requested zoom level</param>
        /// <param name="sender">The menu item</param>
        private void Zoom(int zoomLevel, object sender)
        {
            map.ZoomLevel = zoomLevel;
            // Keep track of which menu item is checked
            this.checkedMenu = (MenuItem)sender;
            RedrawMap();
        }

        private void menuZoom1_Click(object sender, EventArgs e)
        {
            Zoom(3, sender);
        }

        private void menuZoom2_Click(object sender, EventArgs e)
        {
            Zoom(5, sender);
        }

        private void menuZoom3_Click(object sender, EventArgs e)
        {
            Zoom(7, sender);
        }

        private void menuZoom4_Click(object sender, EventArgs e)
        {
            Zoom(9, sender);
        }

        private void menuZoom5_Click(object sender, EventArgs e)
        {
            Zoom(11, sender);
        }

        private void menuZoom6_Click(object sender, EventArgs e)
        {
            Zoom(13, sender);
        }

        private void menuZoom7_Click(object sender, EventArgs e)
        {
            Zoom(15, sender);
        }

        private void menuZoom8_Click(object sender, EventArgs e)
        {
            Zoom(17, sender);
        }

        private void menuZoom9_Click(object sender, EventArgs e)
        {
            Zoom(19, sender);
        }

        private void menuAddress_Click(object sender, EventArgs e)
        {
            using (FormAddress frm = new FormAddress())
            {
                if (frm.ShowDialog() != DialogResult.Cancel)
                {
                    SearchForAddress(frm.Address);
                }
            }
        }

        private void SearchForAddress(string address)
        {
            bool foundResults;
            double lat1, long1, lat2, long2;

            // Ask VirtualEarth to do the search
            foundResults = Search.SearchForAddress(address, out lat1, out long1, out lat2, out long2);

            if (foundResults)
            {
                map.SetViewport(lat1, long1, lat2, long2);
                // This will checkmark the correct zoom menu item and 
                // redraw the map.
                Zoom(map.ZoomLevel);
            }
            else
            {
                MessageBox.Show("No search results found for " + address, FormPocketEarth.AppName);
            }
        }


        private void menuZoom_Popup(object sender, EventArgs e)
        {
            MenuItem menuParent = (MenuItem)sender;
            // Set the checked state of all the sub-menu items
            foreach (MenuItem m in menuParent.MenuItems)
            {
                m.Checked = (checkedMenu == m);
            }
        }

        private void menuAbout_Click(object sender, EventArgs e)
        {
            FormAboutPocketEarth frm = new FormAboutPocketEarth();
            frm.ShowDialog();
            frm.Dispose();
        }

        private void FormPocketEarth_Paint(object sender, PaintEventArgs e)
        {
            map.Paint(e.Graphics);
        }

        private void FormPocketEarth_KeyDown(object sender, KeyEventArgs e)
        {
            // Pan by one quarter the size of the map.
            int deltaX = Size.Width  / 4;
            int deltaY = Size.Height / 4;

            int newZoom;

            // Pan or zoom the map.
            switch (e.KeyCode)
            {
                case Keys.Enter:
                case (Keys)120:  // Pound key
                case Keys.D5:
                    // Zoom in.
                    newZoom = map.ZoomLevel + 2;
                    if (newZoom <= map.MaximumZoom)
                    {
                        Zoom(newZoom);
                    }
                    break;

                case (Keys)119: // Star key
                    // Zoom out.
                    newZoom = map.ZoomLevel - 2;
                    if (newZoom >= map.MinimumZoom)
                    {
                        Zoom(newZoom);
                    }
                    break;

                case Keys.Up:
                case Keys.D2:
                    map.Y -= deltaY;
                    RedrawMap();
                    break;

                case Keys.Down:
                case Keys.D8:
                    map.Y += deltaY;
                    RedrawMap();
                    break;

                case Keys.Left:
                case Keys.D4:
                    map.X -= deltaX;
                    RedrawMap();
                    break;

                case Keys.Right:
                case Keys.D6:
                    map.X += deltaX;
                    RedrawMap();
                    break;

                case Keys.D1:
                    map.Y -= deltaY;
                    map.X -= deltaX;
                    RedrawMap();
                    break;

                case Keys.D3:
                    map.Y -= deltaY;
                    map.X += deltaX;
                    RedrawMap();
                    break;

                case Keys.D7:
                    map.Y += deltaY;
                    map.X -= deltaX;
                    RedrawMap();
                    break;

                case Keys.D9:
                    map.Y += deltaY;
                    map.X += deltaX;
                    RedrawMap();
                    break;
            }
        }

        private void RedrawMap()
        {
            // Clean up the cache so we will try to refetch any bad bitmaps.
            MapTiles.PurgeBadBitmaps();
            // Invalidate the window.
            Invalidate();
        }

        private void menuExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }


        private void menuGps_Click(object sender, EventArgs e)
        {
            // Obtain lat/long from the GPS device
            Gps gps = new Gps();
            gps.Open();
            GpsPosition pos = gps.GetPosition();
            gps.Close();

            if (pos == null || !pos.LongitudeValid || !pos.LatitudeValid)
            {
                MessageBox.Show("Could not obtain a location from a GPS device.", FormPocketEarth.AppName);
            }
            else
            {
                map.Latitude  = pos.Latitude;
                map.Longitude = pos.Longitude;
                RedrawMap();
            }
        }

        private void menuFindContact_Click(object sender, EventArgs e)
        {
            ChooseContactDialog dlg = new ChooseContactDialog();
            //dlg.RequiredProperties = new ContactProperty[] {ContactProperty.HomeAddressStreet, ContactProperty.BusinessAddressStreet };
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                Contact c = dlg.SelectedContact;
                if (c.HomeAddressStreet.Length > 0)
                {
                    SearchForAddress(c.HomeAddressStreet + ", " + c.HomeAddressCity + ", " + c.HomeAddressState);
                }
                else if (c.BusinessAddressStreet.Length > 0)
                {
                    SearchForAddress(c.BusinessAddressStreet + ", " + c.BusinessAddressCity + ", " + c.HomeAddressState);
                }
                else
                {
                    MessageBox.Show(c.FileAs + " does not have an address.", FormPocketEarth.AppName);
                }
            }
        }

        private void FormPocketEarth_Deactivate(object sender, EventArgs e)
        {
        }

        private void menuLocalSearch_Click(object sender, EventArgs e)
        {
            using (FormBusiness frm = new FormBusiness())
            {
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    double lat1, lon1, lat2, lon2;
                    // Figure out which area to search
                    map.GetViewport(out lat1, out lon1, out lat2, out lon2);
                    ArrayList searchResults = 
                        Search.SearchForBusiness(frm.Business, lat1, lon1, lat2, lon2);
                    if (searchResults.Count == 0)
                    {
                        MessageBox.Show("No matches were found for " + frm.Business + ".", FormPocketEarth.AppName);
                    }
                    else
                    {
                        // Show all the search results
                        using (FormBusinessSearchResults frmSearchResults = new FormBusinessSearchResults(searchResults))
                        {
                            if (frmSearchResults.ShowDialog() == DialogResult.OK)
                            {
                                // User picked one result, so navigate to it.
                                map.Latitude = frmSearchResults.SearchResult.Latitude;
                                map.Longitude = frmSearchResults.SearchResult.Longitude;
                                // This is a good, street-level zoom.
                                map.ZoomLevel = 13;
                                RedrawMap();
                            }
                        }
                    }
                }
            }
        }

        private void menuOptions_Click(object sender, EventArgs e)
        {
            using (FormOptions frm = new FormOptions())
            {
                frm.ShowDialog();
            }
        }

        private void FormPocketEarth_Load(object sender, EventArgs e)
        {
            this.Text = FormPocketEarth.AppName;
        }
    }
}

⌨️ 快捷键说明

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