Winforms(或类似的Winforms)是否有地质点类可用?

Winforms(或类似的Winforms)是否有地质点类可用?,winforms,bing-maps,geopoints,uwp-maps,Winforms,Bing Maps,Geopoints,Uwp Maps,在我的UWP应用程序中,我使用了一个地质点类: using Windows.Devices.Geolocation; . . . List<Geopoint> locations; 更新2 我尝试了答案中提供的代码: this.UserControl1.myMap.AnimationLevel = AnimationLevel.Full; this.userControl11.myMap.Loaded += MyMap_Loaded; …但它不会编译。我没有UserContr

在我的UWP应用程序中,我使用了一个地质点类:

using Windows.Devices.Geolocation;

. . .

List<Geopoint> locations;
更新2 我尝试了答案中提供的代码:

this.UserControl1.myMap.AnimationLevel = AnimationLevel.Full;
this.userControl11.myMap.Loaded += MyMap_Loaded;
…但它不会编译。我没有UserControl11(答案代码就是这样),但我有UserControl1,但它不被识别:

这就是问题中的XAML(Bing地图关键点已混淆):


对于希望使用不同于的映射控件的用户,可以按照以下步骤使用Windows窗体的Windows社区工具包映射控件

注意:Windows 10(引入v10.0.17709.0)是一个先决条件

  • 创建一个Windows窗体应用程序(.NET Framework>=4.6.2-我尝试了4.7.2)

  • 安装NuGet软件包

  • 添加app.manifest文件:右键单击project→ 添加新项目→ 选择位于“常规”节点下的应用程序清单文件(仅限Windows)

  • 打开app.manifest文件并取消注释
    下的
    支持对象:

    此外,请确保包括所需的用法:

    using Microsoft.Toolkit.Forms.UI.Controls;
    using Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT;
    
    注意1:我无法在designer中添加该控件,因为当我尝试在窗体上删除该控件时,在设计时出现异常,所以我决定在运行时使用add-it

    注2:您需要使用地图;但是,出于测试目的,您可能会忽略获取密钥

  • 运行应用程序并查看结果:

  • 更多信息

    • WinForms控件是WPF的包装器

    对于那些希望使用不同于的控件的用户,您可以按照以下步骤为Windows窗体使用Windows社区工具包映射控件

    注意:Windows 10(引入v10.0.17709.0)是一个先决条件

  • 创建一个Windows窗体应用程序(.NET Framework>=4.6.2-我尝试了4.7.2)

  • 安装NuGet软件包

  • 添加app.manifest文件:右键单击project→ 添加新项目→ 选择位于“常规”节点下的应用程序清单文件(仅限Windows)

  • 打开app.manifest文件并取消注释
    下的
    支持对象:

    此外,请确保包括所需的用法:

    using Microsoft.Toolkit.Forms.UI.Controls;
    using Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT;
    
    注意1:我无法在designer中添加该控件,因为当我尝试在窗体上删除该控件时,在设计时出现异常,所以我决定在运行时使用add-it

    注2:您需要使用地图;但是,出于测试目的,您可能会忽略获取密钥

  • 运行应用程序并查看结果:

  • 更多信息

    • WinForms控件是WPF的包装器
    要设置的视图,可以使用方法。该方法具有不同的重载,例如,您可以将(基于所需位置的纬度和经度创建的)和缩放级别传递给该方法,如下所示:

    BasicGeoposition location = new BasicGeoposition();
    location.Latitude = 36.59894360222391; // Monterey == 36.6002° N
    location.Longitude = -121.8616426604813; // Monterey == 121.8947° W (West is negative)
    Geopoint geop = new Geopoint(location);
    await map.TrySetSceneAsync(MapScene.CreateFromLocation(geop));
    cmbxZoomLevels.SelectedIndex = Convert.ToInt32(map.ZoomLevel - 1);
    map.Style = MapStyle.Aerial3DWithRoads;
    
    var location = new Location(47.604, -122.329);
    this.userControl11.myMap.SetView(location, 12);
    
    同样可以通过设置和来实现

    下载或克隆示例

    您可以从此处下载或关闭工作示例:

    • 克隆
    • 下载
    逐步示例-放大西雅图作为初始视图

  • 按照中的说明创建使用WPF Bing Maps控件的Windows窗体项目

  • 处理
    表单的加载事件
    ,并使用以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        var map = new MapControl();
        map.Dock = DockStyle.Fill;
        map.MapServiceToken = "YOUR KEY";
        map.LoadingStatusChanged += async (obj, args) =>
        {
            if (map.LoadingStatus == MapLoadingStatus.Loaded)
            {
                var cityPosition = new BasicGeoposition() { 
                    Latitude = 47.604, Longitude = -122.329 };
                var cityCenter = new Geopoint(cityPosition);
                await map.TrySetViewAsync(cityCenter, 12);
            }
        };
        this.Controls.Add(map);
    }
    
     private void Form1_Load(object sender, EventArgs e)
     {
         this.userControl11.myMap.AnimationLevel = AnimationLevel.Full;
         this.userControl11.myMap.Loaded += MyMap_Loaded;
     }
     private void MyMap_Loaded(object sender, System.Windows.RoutedEventArgs e)
     {
         var location = new Location(47.604, -122.329);
         this.userControl11.myMap.SetView(location, 12);
     }
    
    确保使用Microsoft.Maps.MapControl.WPF使用

  • 因此,地图在西雅图缩放为中心位置:

    更多信息:

    您可能希望查看以下链接以了解更多信息:

    要设置的视图,可以使用方法。该方法具有不同的重载,例如,您可以将(基于所需位置的纬度和经度创建的)和缩放级别传递给该方法,如下所示:

    BasicGeoposition location = new BasicGeoposition();
    location.Latitude = 36.59894360222391; // Monterey == 36.6002° N
    location.Longitude = -121.8616426604813; // Monterey == 121.8947° W (West is negative)
    Geopoint geop = new Geopoint(location);
    await map.TrySetSceneAsync(MapScene.CreateFromLocation(geop));
    cmbxZoomLevels.SelectedIndex = Convert.ToInt32(map.ZoomLevel - 1);
    map.Style = MapStyle.Aerial3DWithRoads;
    
    var location = new Location(47.604, -122.329);
    this.userControl11.myMap.SetView(location, 12);
    
    同样可以通过设置和来实现

    下载或克隆示例

    您可以从此处下载或关闭工作示例:

    • 克隆
    • 下载
    逐步示例-放大西雅图作为初始视图

  • 按照中的说明创建使用WPF Bing Maps控件的Windows窗体项目

  • 处理
    表单的加载事件
    ,并使用以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        var map = new MapControl();
        map.Dock = DockStyle.Fill;
        map.MapServiceToken = "YOUR KEY";
        map.LoadingStatusChanged += async (obj, args) =>
        {
            if (map.LoadingStatus == MapLoadingStatus.Loaded)
            {
                var cityPosition = new BasicGeoposition() { 
                    Latitude = 47.604, Longitude = -122.329 };
                var cityCenter = new Geopoint(cityPosition);
                await map.TrySetViewAsync(cityCenter, 12);
            }
        };
        this.Controls.Add(map);
    }
    
     private void Form1_Load(object sender, EventArgs e)
     {
         this.userControl11.myMap.AnimationLevel = AnimationLevel.Full;
         this.userControl11.myMap.Loaded += MyMap_Loaded;
     }
     private void MyMap_Loaded(object sender, System.Windows.RoutedEventArgs e)
     {
         var location = new Location(47.604, -122.329);
         this.userControl11.myMap.SetView(location, 12);
     }
    
    确保使用Microsoft.Maps.MapControl.WPF使用

  • 因此,地图在西雅图缩放为中心位置:

    更多信息:

    您可能希望查看以下链接以了解更多信息:


    类似的课程对你有用吗?虽然创建具有相似类型的类非常简单,但我不确定它是否有多大帮助。您的具体要求/问题是什么?(还请指定.NET版本、操作系统,如果要使用WPF Bing映射或UWP Bing映射),WPF映射没有
    TrySetSceneAsync
    方法。你可以看看它的方法。属于。使用Windows Community ToolKit Map Control是否为您提供了一个选项?很好,您现在有了一个可用的解决方案。WPF Bing Maps已经足够好了,我只是想确定您将使用哪一个,看看我是否可以帮助解决这个问题。您是否尝试过
    SetVeiw
    或设置
    Center
    ZoomLevel
    ?类似的类对您有用吗?虽然创建具有相似类型的类非常简单,但我不确定它是否有多大帮助。您的具体要求/问题是什么?(也请指定.NET版本、操作系统,如果您要使用WPF Bing映射或UWP Bing映射),WPF映射没有