在 winform 应用程序中使用 WPF 控件在 bing 地图中添加多个图钉
Adding multiple pushpins in bing map using WPF control in winform application
我有一个小型 winform 应用程序,它使用 WPF 用户控件在我的 winform 上显示 bing 地图。我可以添加一个图钉,并设置位置缩放等,
这是我的 xaml 文件:
<UserControl x:Class="MyBingWinForm.MyMapControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF">
<Grid>
<m:Map Name="Map"/>
</Grid>
我的 C# 文件如下所示:
namespace MyBingWinForm
{
public partial class MyMapControl
{
public MyMapControl()
{
InitializeComponent();
Map.Center = new Location(55.6760970, 12.5683370);
Pushpin pin = new Pushpin();
pin.Location = new Location(55.6760970, 12.5683370);
Map.ZoomLevel = 12;
// Adds the pushpin to the map.
Map.Children.Add(pin);
// Removes pushpin from the map.
// myMap.Children.Remove(pin);
}
}
}
我想在地图上添加多个图钉,在某种迭代中,考虑有一个带有经度和纬度的 class
或一个结构,也许是一个数组。
另一个愿望是列表中的第一个图钉具有与其他图钉不同的外观,但这是另一个问题。
我希望有人能给我一个小指南或引导我正确的方法。
我在 visual Studio 2012
工作
首先确定您要将位置数据存储在何处。您可以将其存储在本地文件、数据库(在服务器或本地)中,使用 Bing 空间数据服务或其他一些存储系统。一旦你将数据存储在某个地方,你就可以将它加载到你的应用程序中。如果您使用的是本地文件,您可能希望使用标准空间文件格式(如 GeoJSON 或 KML)存储数据。如果您这样做,那么您将需要一个工具来解析数据并将其加载到 WPF 地图之上。如果您将数据存储在数据库中,则需要将数据获取到您的应用程序。如果数据库是本地的,那么这就相当容易了。如果它在服务器上,那么您需要创建一个 Web 服务。无论采用哪种方法,您都可能会发现 Entity Framework 确实让事情变得简单。如果您使用 Bing 空间数据服务,您只需解析 REST 响应,这很容易做到。一旦完成其中任何一项,您最终应该得到一个包含某种位置信息的对象数组或列表。简单地遍历这些对象并创建图钉并将它们添加到地图或更好的 MapLayer。
这里有一些有用的资源:
http://mapstoolbox.codeplex.com/ - 提供工具以轻松将空间文件加载到各种 Bing 地图控件中,包括 WPF。
以下是关于在数据库之上创建空间网络服务的信息:
https://blogs.bing.com/maps/2013/08/05/advance-spatial-queries-using-entity-framework-5/
这是关于 Bing 空间数据服务的文档:
我有一个小型 winform 应用程序,它使用 WPF 用户控件在我的 winform 上显示 bing 地图。我可以添加一个图钉,并设置位置缩放等,
这是我的 xaml 文件:
<UserControl x:Class="MyBingWinForm.MyMapControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF">
<Grid>
<m:Map Name="Map"/>
</Grid>
我的 C# 文件如下所示:
namespace MyBingWinForm
{
public partial class MyMapControl
{
public MyMapControl()
{
InitializeComponent();
Map.Center = new Location(55.6760970, 12.5683370);
Pushpin pin = new Pushpin();
pin.Location = new Location(55.6760970, 12.5683370);
Map.ZoomLevel = 12;
// Adds the pushpin to the map.
Map.Children.Add(pin);
// Removes pushpin from the map.
// myMap.Children.Remove(pin);
}
}
}
我想在地图上添加多个图钉,在某种迭代中,考虑有一个带有经度和纬度的 class 或一个结构,也许是一个数组。
另一个愿望是列表中的第一个图钉具有与其他图钉不同的外观,但这是另一个问题。
我希望有人能给我一个小指南或引导我正确的方法。 我在 visual Studio 2012
工作首先确定您要将位置数据存储在何处。您可以将其存储在本地文件、数据库(在服务器或本地)中,使用 Bing 空间数据服务或其他一些存储系统。一旦你将数据存储在某个地方,你就可以将它加载到你的应用程序中。如果您使用的是本地文件,您可能希望使用标准空间文件格式(如 GeoJSON 或 KML)存储数据。如果您这样做,那么您将需要一个工具来解析数据并将其加载到 WPF 地图之上。如果您将数据存储在数据库中,则需要将数据获取到您的应用程序。如果数据库是本地的,那么这就相当容易了。如果它在服务器上,那么您需要创建一个 Web 服务。无论采用哪种方法,您都可能会发现 Entity Framework 确实让事情变得简单。如果您使用 Bing 空间数据服务,您只需解析 REST 响应,这很容易做到。一旦完成其中任何一项,您最终应该得到一个包含某种位置信息的对象数组或列表。简单地遍历这些对象并创建图钉并将它们添加到地图或更好的 MapLayer。
这里有一些有用的资源:
http://mapstoolbox.codeplex.com/ - 提供工具以轻松将空间文件加载到各种 Bing 地图控件中,包括 WPF。
以下是关于在数据库之上创建空间网络服务的信息:
https://blogs.bing.com/maps/2013/08/05/advance-spatial-queries-using-entity-framework-5/
这是关于 Bing 空间数据服务的文档: