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; }
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; } }
private Guid CreatePoiAndSubscribeToPositionChanged(Point pos, TrackPoiType trackPoiType) { var poi = CreatePoI(pos, trackPoiType); FollowPoiPosition(poi); return poi.Id; }