MapIcon & Route — MapIcon исчезает при движении по маршруту

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

В настоящее время я тестирую это на эмуляторе 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

Показывает правильно

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

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

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


person silentw    schedule 24.06.2014    source источник


Ответы (1)


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

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

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

person Dr.Jukka    schedule 30.06.2014
comment
Это одна вещь, которую я должен попробовать. В настоящее время я пересчитываю маршрут для каждой измененной позиции, чтобы началом маршрута было текущее местоположение пользователя. Я должен попытаться дождаться отрисовки маршрута, а затем уже после этого рисовать MapIcon. Спасибо за идею, как будет время, отпишусь о результатах. - person silentw; 30.06.2014