欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在WinForm和WPF中使用GMap.Net地圖插件簡單教程

 更新時間:2013年12月08日 09:51:54   作者:  
GMap.NET是一個強大、免費、跨平臺、開源的.NET控件,它在Windows Forms 和WPF環(huán)境中能夠使用來自Google, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac等地圖,下面看一下使用方法

如何在WinForm中使用GMap.Net

項目主頁:https://greatmaps.codeplex.com/

下載GMap.Net,我下載的版本:greatmaps_81b71bf30091,編譯三個核心項目:

GMap.Net.Core:核心DLL

GMap.Net.WindowsForms:WinForm中使用的DLL

GMap.NET.WindowsPresentation:WPF中使用的DLL

在WinForm項目中使用GMap:

1、新建一個Visual C# 的Windows窗口程序。添加對GMap.Net.Core.DLL和GMap.Net.WindowsForms.DLL的引用。

2、在項目中添加一個UserControl,這里取名為MapControl,修改這個UserControl,使其繼承于GMapControl,這就是展示地圖的控件。修改如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GMap.NET.WindowsForms;

namespace GMapWinFormDemo
{
    public partial class MapControl : GMapControl
    {
        public MapControl()
        {
            InitializeComponent();
        }
    }
}

3、編譯項目,在我們的Form設(shè)計窗口下,在工具箱中(tool box)里就可以看到這個MapControl,將這個MapControl加到Form中。

4、在主Form中添加相關(guān)的代碼如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.WindowsPresentation;

namespace GMapWPFDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            try
            {
                System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("www.google.com.hk");
            }
            catch
            {
                mapControl.Manager.Mode = AccessMode.CacheOnly;
                MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

            mapControl.MapProvider = GMapProviders.GoogleChinaMap; //google china 地圖
            mapControl.MinZoom = 2;  //最小縮放
            mapControl.MaxZoom = 17; //最大縮放
            mapControl.Zoom = 5;     //當(dāng)前縮放
            mapControl.ShowCenter = false; //不顯示中心十字點
            mapControl.DragButton = MouseButton.Left; //左鍵拖拽地圖
            mapControl.Position = new PointLatLng(32.064, 118.704); //地圖中心位置:南京

            mapControl.OnMapZoomChanged += new MapZoomChanged(mapControl_OnMapZoomChanged);
            mapControl.MouseLeftButtonDown += new MouseButtonEventHandler(mapControl_MouseLeftButtonDown);
        }

        void mapControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Point clickPoint = e.GetPosition(mapControl);
            PointLatLng point = mapControl.FromLocalToLatLng((int)clickPoint.X, (int)clickPoint.Y);
            GMapMarker marker = new GMapMarker(point);
            mapControl.Markers.Add(marker);
        }

        void mapControl_OnMapZoomChanged()
        {
        }
    }
}

5、編譯、運行項目就可以看到地圖,這里使用的是在線的Google中國的地圖,地圖控件的幾個主要屬性:

MapProvider:地圖服務(wù)的提供者。

MinZoom:最小縮放,最小可為1。

MaxZoom:最大縮放,最大為24.

Zoom:當(dāng)前縮放。

ShowCenter:是否顯示中心點(最好為false,否則地圖中間會有一個紅色的十字)。

DragButton:那個鍵拖動地圖。

Position:地圖中心點位置。

地圖顯示如下,支持左鍵拖動,放大縮小,可以顯示左鍵的點擊經(jīng)緯度。

如何在WPF中使用GMap.Net

1、新建一個Visual C# 的WPF程序。添加對GMap.Net.Core.DLL和GMap.NET.WindowsPresentation.DLL的引用。

2、由于WPF的UserControl不能修改繼承的基類,所以添加一個新的類,為MapControl.cs,代碼如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GMap.NET.WindowsPresentation;

namespace GMapWPFDemo
{
    class MapControl : GMapControl
    {
    }
}

只需要繼承GMapControl就行了,基本功能都可以由GMapControl提供。

3、在我們的MainWindow.xaml中,添加項目的namespace:xmlns:src="clr-namespace:GMapWPFDemo",在XML代碼中添加對MapControl.cs的使用:

復(fù)制代碼 代碼如下:

<Window x:Class="GMapWPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:GMapWPFDemo"
        Title="MainWindow" Height="410" Width="618">
    <Grid>
            <GroupBox Name="mapgroup" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
            <src:MapControl x:Name="mapControl" Zoom="13" MaxZoom="24" MinZoom="1" />
            </GroupBox>
    </Grid>
</Window>

4、在MainWindow中添加相關(guān)的代碼如下:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.WindowsPresentation;

namespace GMapWPFDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            try
            {
                System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("www.google.com.hk");
            }
            catch
            {
                mapControl.Manager.Mode = AccessMode.CacheOnly;
                MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButton.OK, MessageBoxImage.Warning);
            }

            mapControl.MapProvider = GMapProviders.GoogleChinaMap; //google china 地圖
            mapControl.MinZoom = 2;  //最小縮放
            mapControl.MaxZoom = 17; //最大縮放
            mapControl.Zoom = 5;     //當(dāng)前縮放
            mapControl.ShowCenter = false; //不顯示中心十字點
            mapControl.DragButton = MouseButton.Left; //左鍵拖拽地圖
            mapControl.Position = new PointLatLng(32.064, 118.704); //地圖中心位置:南京

            mapControl.OnMapZoomChanged += new MapZoomChanged(mapControl_OnMapZoomChanged);
            mapControl.MouseLeftButtonDown += new MouseButtonEventHandler(mapControl_MouseLeftButtonDown);
        }

        void mapControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Point clickPoint = e.GetPosition(mapControl);
            PointLatLng point = mapControl.FromLocalToLatLng((int)clickPoint.X, (int)clickPoint.Y);
            GMapMarker marker = new GMapMarker(point);
            mapControl.Markers.Add(marker);
        }

        void mapControl_OnMapZoomChanged()
        {
        }
    }
}

效果圖如下:

和Winform代碼差不多,一些響應(yīng)事件不同,WPF的GMap中沒有GMapOverlay這個“圖層”的概念,所以沒法加多個GMapOverlay,在GMapOverlay上再加GMapMarker(可以理解為圖標(biāo)標(biāo)注),GMapMarker只能直接加在mapControl上面。

WPF的GMapMarker可以直接實例化(WinForm中的不行),但是貌似沒有默認(rèn)提供的效果,而要做出一些效果,需要自己設(shè)計實現(xiàn),官方Demo中已經(jīng)有了一些實現(xiàn),WinForm中的GMapMarker可以用GMarkerGoogle去實例化(提供的有可選的效果,也可以自己傳入bitmap作為自定義的圖標(biāo))。

相關(guān)文章

  • ASP.NET Core MVC/WebApi基礎(chǔ)系列1

    ASP.NET Core MVC/WebApi基礎(chǔ)系列1

    這篇文章主要介紹了ASP.NET Core MVC/WebApi基礎(chǔ)系列,后續(xù)會穿插講EF Core和ASP.NET Core,雖說是基礎(chǔ)系列但也是也有你不知道的。
    2019-04-04
  • ASP.NET餐飲管理系統(tǒng)制作代碼分享

    ASP.NET餐飲管理系統(tǒng)制作代碼分享

    本文通過圖片+代碼的形式,詳細(xì)的介紹了餐飲管理系統(tǒng)各部分功能及其實現(xiàn)方法。餐飲管理系統(tǒng)的制作必須有一條條理性的思維方可以做好,感興趣的小伙伴們可以參考一下
    2015-09-09
  • 實現(xiàn).Net7下數(shù)據(jù)庫定時檢查的方法詳解

    實現(xiàn).Net7下數(shù)據(jù)庫定時檢查的方法詳解

    在軟件開發(fā)過程中,有時候我們需要定時地檢查數(shù)據(jù)庫中的數(shù)據(jù),并在發(fā)現(xiàn)新增數(shù)據(jù)時觸發(fā)一個動作。為了實現(xiàn)這個需求,本文我們在?.Net?7?下進(jìn)行一次簡單的演示。感興趣的可以了解一下
    2022-12-12
  • ASP.net(c#)用類的思想實現(xiàn)插入數(shù)據(jù)到ACCESS例子

    ASP.net(c#)用類的思想實現(xiàn)插入數(shù)據(jù)到ACCESS例子

    ASP.net(c#)用類的思想實現(xiàn)插入數(shù)據(jù)到ACCESS例子...
    2007-07-07
  • VS2015中C#版本6.0的新特性 你需要知道

    VS2015中C#版本6.0的新特性 你需要知道

    VS2015內(nèi)置的C#版本為6.0,提供了一些新特性,這篇文章主要為大家詳細(xì)介紹了VS2015中C#版本6.0的8種新特性,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 詳解.NET Core中的數(shù)據(jù)保護組件

    詳解.NET Core中的數(shù)據(jù)保護組件

    在本篇文章中我們給大家整理了關(guān)于返回主頁.NET Core中的數(shù)據(jù)保護組件的相關(guān)知識點內(nèi)容,有興趣的朋友們參考下。
    2018-09-09
  • ajaxToolkit:ModalPopupExtender演示及實現(xiàn)代碼

    ajaxToolkit:ModalPopupExtender演示及實現(xiàn)代碼

    ajaxToolkit:ModalPopupExtender可以讓用戶模擬新開一個窗口,就是在模擬新開窗口作多項選項的功能,感興趣的朋友可以了解下,希望此文對你有所幫助
    2013-01-01
  • C#中使用SQLite數(shù)據(jù)庫的方法介紹

    C#中使用SQLite數(shù)據(jù)庫的方法介紹

    SQLite是一個開源的輕量級的桌面型數(shù)據(jù)庫,它將幾乎所有數(shù)據(jù)庫要素(包括定義、表、索引和數(shù)據(jù)本身)都保存在一個單一的文件中。SQLite用C編寫實現(xiàn),它在內(nèi)存消耗、文件體積、操作性能、簡單性方面都有不錯的表現(xiàn)
    2012-01-01
  • ASP.NET MVC下拉框聯(lián)動實例解析

    ASP.NET MVC下拉框聯(lián)動實例解析

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC下拉框聯(lián)動實現(xiàn)方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • .net6?使用Senparc開發(fā)小程序配置過程

    .net6?使用Senparc開發(fā)小程序配置過程

    這篇文章主要介紹了.net6?使用Senparc開發(fā)小程序配置,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論