Mapsui добавление булавок карты в формах Xamarin - PullRequest
0 голосов
/ 03 октября 2018


Мне нужно добавить связку пинов в элемент управления карты MapsUI, который использует плитки OpenStreetMap.

Проблема в том, что я не могу найти ничего, упоминающего пины в их документации, поэтому мой вопрос:

Имеются ли какие-либо булавки, но имеют разные имена, или я должен сам нарисовать булавки (используя геометрию и точки, как в некоторых примерах, которые я нашел), и если да, то как мне сохранить их одинаковый размер при масштабировании карты??

Может быть, кто-то может указать, где я должен искать в их документации на случай, если я ослеп и пропустил это.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Идея состоит в том, что вы используете свои собственные растровые изображения для рисования в качестве "булавок".

Mapsui имеет функции.Объект имеет геометрию, которая может быть точкой, линией и многоугольником (и некоторыми другими).Особенность нарисована шириной какого-то стиля.Что вам нужно сделать, это создать объекты с точечной геометрией и использовать символьный стиль с растровым изображением в качестве символа.Вам необходимо зарегистрировать свое растровое изображение и использовать bitmapId в символе.Смотрите образец здесь:

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

0 голосов
/ 06 июня 2019

Ваш просмотр карты 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",
    });
}

Надеюсь, этот простейший пример поможет.

0 голосов
/ 03 октября 2018

Вы можете использовать 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);
...