Xamarin.forms Mapsui在Xamarin表单中添加贴图接点

Xamarin.forms Mapsui在Xamarin表单中添加贴图接点,xamarin.forms,mapsui,Xamarin.forms,Mapsui,我需要在使用OpenStreetMaptiles的MapsUImap控件上添加一串pin 问题是我在他们的文档中找不到任何提到PIN的内容,所以我的问题是: 是否有可用的管脚,但名称不同,或者我必须自己绘制管脚(使用我发现的一些示例中的几何体和点),如果有,在缩放地图时如何保持它们的大小相同 也许有人能指出我应该去哪里看他们的照片,以防我瞎了眼,错过了 谢谢 您可以使用Xamarin.Forms.GoogleMaps,因为它们为您提供了添加多个PIN的功能 以下是示例代码: var positi


我需要在使用
OpenStreetMap
tiles的
MapsUI
map控件上添加一串pin

问题是我在他们的文档中找不到任何提到PIN的内容,所以我的问题是:

是否有可用的管脚,但名称不同,或者我必须自己绘制管脚(使用我发现的一些示例中的几何体和点),如果有,在缩放地图时如何保持它们的大小相同

也许有人能指出我应该去哪里看他们的照片,以防我瞎了眼,错过了


谢谢

您可以使用Xamarin.Forms.GoogleMaps,因为它们为您提供了添加多个PIN的功能

以下是示例代码:

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);

其想法是,您可以使用自己的位图绘制为“pin”

Mapsui有很多特点。要素具有可以是点、线串和多边形(以及其他一些)的几何图形。特征是以某种样式绘制的。您需要做的是使用点几何图形创建要素,并使用带有位图的符号样式作为符号。您需要注册位图并在符号中使用位图ID。请参见此处的示例:


您的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>

希望这个最简单的例子能有所帮助。

您看过示例应用程序了吗?它们使用特征在地图上绘制管脚是的,但它们实际上不是管脚
var point=SphericalMercator.FromLonLat(long,lat);特征。几何=点这将导致一个圆圈,我想要一个谷歌地图别针样式(至少形状),如果我仍然缺少一些东西,请告诉我,否则我想我会尝试使用自定义IConStanks!我会尝试一下,我必须使用OpenStreetMap,因为谷歌地图在中国是不可用的。嗨,谢谢你的帮助!它工作得很好。对于任何想这样做的人,不要忘记将资源的构建操作设置为嵌入式资源,否则将找不到图像(右键单击+属性)。您好,有没有办法使用每个平台的可绘制文件夹中的图像?我发现的每一个例子都使用了PCL项目中的图像,但是我想考虑具有不同像素密度的屏幕。一个类似这样的想法:从ImageSource获取位图,然后注册它?@kisslory是的,这是可能的。您需要注册一个原始位图。也许您可以从Android ImageSource获取原始位图。也许您可以直接加载原始字节。
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",
    });
}