Mapsui在Xamarin表单中添加地图图钉

时间:2018-10-03 13:02:55

标签: xamarin.forms mapsui


我需要在使用MapsUI磁贴的OpenStreetMap地图控件上添加一堆图钉。

问题是我在他们的文档中找不到任何提及别针的东西,所以我的问题是:

有没有可用的图钉,但是名称不同,或者我必须自己绘制图钉(如我在某些示例中使用的Geometry和Points),如果是的话,在缩放地图时如何保持它们的大小相同?

也许有人可以指出我应该documentation去哪里看,以防我失明并错过了它。

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以使用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);

答案 1 :(得分:1)

想法是您使用自己的位图绘制为“图钉”。

Mapsui具有功能。要素的几何形状可以是点,线串和多边形(以及其他一些几何形状)。特征绘制宽度是一种样式。您需要做的是创建具有点几何的要素,并使用带有位图的symbolstyle作为符号。您需要注册您的位图,并在符号中使用bitmapId。在此处查看示例:

https://github.com/Mapsui/Mapsui/blob/master/Samples/Mapsui.Samples.Common/Maps/PointsSample.cs

答案 2 :(得分:0)

您的Mapsui地图视图Mapsui.UI.Forms.MapView具有属性Pins。您可以在那里添加图钉。 您可以从MapView的* 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#代码访问它:

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",
    });
}

希望这个最简单的示例会有所帮助。

相关问题