MapIcon

#windows-phone-8.1 #here-api

#windows-phone-8.1 #здесь-api

Вопрос:

Я пытаюсь создать приложение, в котором есть карта, MapIcon, которая «следует» за текущим местоположением пользователя и отображает простой пешеходный маршрут от A до B.

В настоящее время я тестирую это на эмуляторе WP8.1, и все работает просто отлично, если я не попытаюсь «пройти» по отображаемому маршруту. Значок исчезает, и если я оставляю маршрут, значок появляется снова.

Ниже приведен код, связанный с этой операцией, и несколько скриншотов, на которых показан неожиданный результат.

Местоположения скрыты по соображениям конфиденциальности.

 Private geolocator As New Geolocator

Public Async Function IniciarGPS() As Task
    map.Language = "pt-PT"

    Dim waypoints As New List(Of Geopoint)
    waypoints.Add(New Geopoint(New BasicGeoposition With {
        .Latitude = 0.0,
        .Longitude = -0.0
    }))
    waypoints.Add(New Geopoint(New BasicGeoposition With {
        .Latitude = 0.0,
        .Longitude = -0.0
    }))
    Dim r As MapRouteFinderResult = Await MapRouteFinder.GetWalkingRouteFromWaypointsAsync(waypoints)
    If r.Status = MapRouteFinderStatus.Success Then
        Dim route As MapRoute = r.Route
        Dim mapRouteView As New MapRouteView(route)
        mapRouteView.RouteColor = Colors.Black
        map.Routes.Add(mapRouteView)
    End If

    geolocator.DesiredAccuracy = PositionAccuracy.High
    geolocator.MovementThreshold = 10

    AddHandler geolocator.PositionChanged, AddressOf geolocator_PositionChanged
End Function

Private mIcon As MapIcon = Nothing
Private Async Sub geolocator_PositionChanged(ByVal sender As Object, ByVal e As PositionChangedEventArgs)
    Await map.TrySetViewAsync(e.Position.Coordinate.Point, 18, 0, 0, MapAnimationKind.Bow)

    Await Me.Dispatcher.RunAsync(CoreDispatcherPriority.High,
        Sub()
            If mIcon Is Nothing Then
                mIcon = New MapIcon()
                mIcon.Image =
                    RandomAccessStreamReference.CreateFromUri(
                        New Uri("ms-appx:///Assets/Map/map_icon.png")
                    )
                mIcon.Title = "EU"
                mIcon.NormalizedAnchorPoint = New Point(0.5, 0.5)
                map.MapElements.Add(mIcon)
            End If

            mIcon.Location = New Geopoint(New BasicGeoposition() With {
                .Latitude = e.Position.Coordinate.Point.Position.Latitude,
                .Longitude = e.Position.Coordinate.Point.Position.Longitude
            })
        End Sub)
End Sub
  

Отображается правильно

Отображается правильно

Карта не отображается при определении маршрута

Карта не отображается при определении маршрута

Ответ №1:

По крайней мере, одной проблемой может быть Z-упорядочение, и поскольку нет функций для изменения z-упорядочения, вам нужно будет сделать это, добавив объекты в правильном порядке. порядок.

Таким образом, вы можете увидеть, поможет ли это, если вы удалите и удалите значок человека с карты, когда начнете прокладывать маршрут, и построите и добавьте его обратно после добавления маршрута на карту. Это гарантирует, что значок будет отображаться поверх объекта маршрута.

Должен признать, что я никогда не проверял эту опцию с объектами маршрута, поэтому, если она все еще не работает, я бы поэкспериментировал, пытаясь нарисовать маршрут поэтапно, используя полилинии, тогда, по крайней мере, он должен работать правильно.

Комментарии:

1. Это одна вещь, которую я должен попробовать. В настоящее время я пересчитываю маршрут для каждой измененной позиции, чтобы началом маршрута было текущее местоположение пользователя. Мне придется попытаться дождаться отрисовки маршрута, а затем после этого нарисовать MapIcon. Спасибо за идею, я опубликую результаты, как только у меня будет время.