Mapsui 在 Xamarin Forms 中添加地图图钉
Mapsui adding map pins in Xamarin Forms
我需要在使用 OpenStreetMap
个图块的 MapsUI
地图控件上添加一堆图钉。
问题是我在他们的文档中找不到任何提及引脚的内容,所以我的问题是:
是否有可用的图钉但名称不同,或者我必须自己绘制图钉(在我发现的一些示例中使用几何和点),如果有,我如何在缩放地图时保持它们相同的大小?
也许有人可以指出我应该在哪里查看他们的 documentation 以防我失明而错过了它。
谢谢!
您可以使用 Xamarin.Forms.GoogleMaps,因为它们提供了添加您选择的多个图钉的功能。
示例代码如下:
var position = new Position(Latitude, Longitude);
var pin = new Pin
{
Type = PinType.Place,
Position = position,
Icon = BitmapDescriptorFactory.FromBundle("pin.png"),
Label = "custom pin",
Address = "custom detail info",
};
MyMap.Pins.Add(pin);
想法是您使用自己的位图来绘制 'pins'。
Mapsui有特色。要素具有几何形状,可以是点、线串和多边形(以及其他一些)。特征是用某种样式绘制的。您需要做的是使用点几何创建要素,并使用带有位图的符号样式作为符号。您需要注册您的位图并在符号中使用 bitmapId。请在此处查看示例:
https://github.com/Mapsui/Mapsui/blob/master/Samples/Mapsui.Samples.Common/Maps/PointsSample.cs
您的 Mapsui 地图视图 Mapsui.UI.Forms.MapView
有 属性 Pins
。您可以在那里添加引脚。
您可以从 MapView
.
的 code-behind *xaml.cs 访问 MapView
查看
为此,首先,在 XAML 页面中命名您的地图视图:
<ContentPage
xmlns:mapsui="clr-namespace:Mapsui.UI.Forms;assembly=Mapsui.UI.Forms"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="YourProject.Pages.YourMap">
<ContentPage.Content>
<mapsui:MapView
x:Name="selectMapControl"/>
</ContentPage.Content>
</ContentPage>
然后从该页面的 C# code-behind 访问它:
using Mapsui.UI.Forms;
protected override async void OnAppearing()
{
selectMapControl.Pins.Add(new Pin(new MapView())
{
Position = new Position(0, 0),
Type = PinType.Pin,
Label = "Zero point",
Address = "Zero point",
});
}
希望这个最简单的例子对您有所帮助。
我需要在使用 OpenStreetMap
个图块的 MapsUI
地图控件上添加一堆图钉。
问题是我在他们的文档中找不到任何提及引脚的内容,所以我的问题是:
是否有可用的图钉但名称不同,或者我必须自己绘制图钉(在我发现的一些示例中使用几何和点),如果有,我如何在缩放地图时保持它们相同的大小?
也许有人可以指出我应该在哪里查看他们的 documentation 以防我失明而错过了它。
谢谢!
您可以使用 Xamarin.Forms.GoogleMaps,因为它们提供了添加您选择的多个图钉的功能。
示例代码如下:
var position = new Position(Latitude, Longitude);
var pin = new Pin
{
Type = PinType.Place,
Position = position,
Icon = BitmapDescriptorFactory.FromBundle("pin.png"),
Label = "custom pin",
Address = "custom detail info",
};
MyMap.Pins.Add(pin);
想法是您使用自己的位图来绘制 'pins'。
Mapsui有特色。要素具有几何形状,可以是点、线串和多边形(以及其他一些)。特征是用某种样式绘制的。您需要做的是使用点几何创建要素,并使用带有位图的符号样式作为符号。您需要注册您的位图并在符号中使用 bitmapId。请在此处查看示例:
https://github.com/Mapsui/Mapsui/blob/master/Samples/Mapsui.Samples.Common/Maps/PointsSample.cs
您的 Mapsui 地图视图 Mapsui.UI.Forms.MapView
有 属性 Pins
。您可以在那里添加引脚。
您可以从 MapView
.
MapView
查看
为此,首先,在 XAML 页面中命名您的地图视图:
<ContentPage
xmlns:mapsui="clr-namespace:Mapsui.UI.Forms;assembly=Mapsui.UI.Forms"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="YourProject.Pages.YourMap">
<ContentPage.Content>
<mapsui:MapView
x:Name="selectMapControl"/>
</ContentPage.Content>
</ContentPage>
然后从该页面的 C# code-behind 访问它:
using Mapsui.UI.Forms;
protected override async void OnAppearing()
{
selectMapControl.Pins.Add(new Pin(new MapView())
{
Position = new Position(0, 0),
Type = PinType.Pin,
Label = "Zero point",
Address = "Zero point",
});
}
希望这个最简单的例子对您有所帮助。