C # WP8.1 - Отображение MapIcon поверх маршрута при использовании Bing Maps

1

В настоящий момент я просто играю с бинговыми картами. Я следил за учебниками, чтобы создавать маршруты, добавлять mapicons и т.д., Однако я обнаружил, что mapIcon не будет показывать, будет ли он на маршруте. Я попытался сыграть с свойством Z-Index mapIcon, однако это, казалось, малоэффективно, так как я думаю, что это только влияет на другие MapElements.

Кто-нибудь еще знает, как это осуществить?

Мой текущий код для создания маршрута и попытки установить MapIcon в пункте назначения (для abit of Content MapFunctions - это просто статический класс, который я сделал для таких функций, как поиск маршрута, получение текущего местоположения и т.д.):

    private async void DrawRoute()
    {
        // Check if a destination has been set
        if(MapFunctions.destination != null)
        {
            route = await MapFunctions.GetRouteAsync(MapFunctions.destination.Point);

            if (route != null)
            {
                // Use the route to initialize a MapRouteView.
                MapRouteView viewOfRoute = new MapRouteView(route.Route);
                viewOfRoute.RouteColor = Colors.Yellow;
                viewOfRoute.OutlineColor = Colors.Black;


                // Add the new MapRouteView to the Routes collection
                // of the MapControl.
                MyMap.Routes.Add(viewOfRoute);

                // Fit the MapControl to the route.
                await MyMap.TrySetViewBoundsAsync(
                    route.Route.BoundingBox,
                    null,
                    Windows.UI.Xaml.Controls.Maps.MapAnimationKind.None);

                AddDestinationMapElement(MapFunctions.destination.Point);

                // Start timer to update the remaining time of the journey
                UpdateRemainingTime_Tick(this, new Object());
                dispatcherTimer.Start();
            }
            else
            {
                MessageDialog message = new MessageDialog("An error occured while trying to calculate your route. Please try again later.", "Error");
                await message.ShowAsync();
            }
        }
    }

    private void AddDestinationMapElement(Geopoint dest)
    {
        MapIcon MapIcon1 = new MapIcon();
        MapIcon1.Location = new Geopoint(new BasicGeoposition()
        {
            Latitude = dest.Position.Latitude,
            Longitude = dest.Position.Longitude
        });

        MapIcon1.Visible = true;
        MapIcon1.ZIndex = int.MaxValue;
        MapIcon1.Image = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Images/mapIcon.png"));
        MapIcon1.NormalizedAnchorPoint = new Point(0.5, 1.0);
        MapIcon1.Title = "Destination";
        MyMap.MapElements.Add(MapIcon1);
    }
Теги:
bing-maps
windows-phone-8.1
windows-phone

1 ответ

3
Лучший ответ

Если вы хотите добавить pushpin поверх своих элементов, вы можете использовать MapOverlay, который позволит вам добавить в свой элемент управления карту Pushpin (с изображением или любым элементом XAML):

MapOverlay pushpinStart = new MapOverlay();
pushpinStart.PositionOrigin = new Point(0.5, 0.5);
pushpinStart.Content = new Image()
                           {
                               Source =
                                   new BitmapImage(
                                   new Uri("../Assets/Ui/ui-pin-start.png", UriKind.Relative))
                           };
pushpinStart.GeoCoordinate = posCollection[0];

Если вы хотите остаться с MapIcon, то движок рендеринга вычислит, что лучше всего отображать на основе уровня масштабирования и текущего местоположения, а также результата поиска коллизий других элементов. Поэтому я не уверен, что вы ищете.

И для WP8.1 здесь приведен эквивалентный код:

Image iconStart = new Image();
iconStart.Source = new BitmapImage(new Uri("ms-appx:///Assets/Ui/ui-pin-start.png"));
this.Map.Children.Add(iconStart);
MapControl.SetLocation(iconStart, new Geopoint(pos[0]));
MapControl.SetNormalizedAnchorPoint(iconStart, new Point(0.5, 0.5));
  • 0
    Спасибо за ответ. Я никогда раньше не видел класс MapOverlay, определенно звучит так, как будто он может быть лучшим выбором, чем MapIcons для этой ситуации.
  • 0
    Похоже, класс MapOverlay доступен только в WP8, но не в WP8.1, так как я не могу найти его ни в одном пространстве имен для WP8.1
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню