Beispiel #1
0
        private PoI CreateWayPoint(Point pos, TrackPoiType trackPoiType)
        {
            var layer = Poi.Layer;
            if (!string.IsNullOrEmpty(layer))
            {
                var index = layer.IndexOf("_", StringComparison.InvariantCultureIgnoreCase);
                if (index > 0) layer = layer.Substring(0, index);
            }
            var poi = new PoI
            {
                Id        = Guid.NewGuid(),
                Name      = trackPoiType.Humanize(),
                Service   = Model.Service,
                ContentId = trackPoiType.ToString(),
                UserId    = Poi.Id.ToString(),
                Layer     = layer,
                Position  = new Position(pos.X, pos.Y),
                Style     = new DataServer.PoIStyle()
                {
                    DrawingMode       = DrawingModes.Point,
                    FillColor         = Colors.Gold,
                    StrokeColor       = Colors.Black,
                    CallOutFillColor  = Colors.White,
                    CallOutForeground = Colors.Black,
                    StrokeOpacity     = 1,
                    StrokeWidth       = 2,
                    InnerTextLabel    = PoiInnerTextLabel,
                    TitleMode         = TitleModes.Bottom,
                    TapMode           = TapMode.CallOutPopup,
                    InnerTextColor    = Colors.Black,
                    CanEdit           = false
                },
                MetaInfo              = new MetaInfoCollection
                {
                    new MetaInfo { IsEditable = false, Label = "Name", Title = "Name", Type = MetaTypes.text, VisibleInCallOut = true }
                }
            };

            switch (trackPoiType)
            {
                case TrackPoiType.Start:
                    poi.Labels[PoiInnerTextLabel] = "α";
                    break;
                case TrackPoiType.End:
                    poi.Labels[PoiInnerTextLabel] = "Ω";
                    break;
                case TrackPoiType.WayPoint:
                    poi.Labels[PoiInnerTextLabel] = "*";
                    break;
            }

            Execute.OnUIThread(() =>
            {
                poi.TriggerUpdated();
                Model.Service.PoIs.Add(poi);
            });

            return poi;
        }
Beispiel #2
0
        private async void OnPoiDeleted(BaseContent poi, TrackPoiType trackPoiType)
        {
            if (isDeleting) return;
            AppState.TriggerDeleteNotification(notification);

            switch (trackPoiType)
            {
                default:
                    isDeleting = true;
                    await RemoveRoute(poi);
                    isDeleting = false;
                    break;
                case TrackPoiType.WayPoint:
                    var wayPoint = WayPoints.FirstOrDefault(w => w.Id == poi.Id);
                    if (wayPoint != null) WayPoints.Remove(wayPoint);
                    ResetPath();
                    DrawRoute();
                    break;
            }
        }
Beispiel #3
0
 private Guid CreatePoiAndSubscribeToPositionChanged(Point pos, TrackPoiType trackPoiType)
 {
     var poi = CreatePoI(pos, trackPoiType);
     FollowPoiPosition(poi);
     return poi.Id;
 }