public void PositionChanged(object sender, Plugin.Geolocator.Abstractions.PositionEventArgs arg) { if ((LocFlag == LocationFlag.Start || LocFlag == LocationFlag.InBackground) && (RouteCoordinates.Count == 0 || arg.Position.Timestamp.Ticks != RouteCoordinates.Last().Timestamp.Ticks)) //first element can be null, so dont use it { RouteCoordinates.Add(new Plugin.Geolocator.Abstractions.Position(arg.Position)); LastCoordinates.Add(new Plugin.Geolocator.Abstractions.Position(arg.Position)); DrawPoint = new Plugin.Geolocator.Abstractions.Position(arg.Position); switch (Device.RuntimePlatform) { case Device.iOS: case Device.Android: if (VisibleRegion != null) { this.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(arg.Position.Latitude, arg.Position.Longitude), VisibleRegion.Radius)); } break; case Device.UWP: //Implementation in native map break; } } }
void RemoveLastCoordinates() { for (int i = 0; i < LastCoordinates.Count; i++) { GridNode node = LastCoordinates[i]; node.RemoveObstacle(); } LastCoordinates.FastClear(); }
void UpdateCoordinates() { const long gridSpacing = FixedMath.One; bufferCoordinates.FastClear(); CachedBody.GetCoveredSnappedPositions(gridSpacing, bufferCoordinates); foreach (Vector2d vec in bufferCoordinates) { GridNode node = GridManager.GetNode(vec.x, vec.y); if (node == null) { continue; } node.AddObstacle(); LastCoordinates.Add(node); } }
public async Task StopListeningLocation(bool stopGeolocator, bool ifDataReset) { LocFlag = LocationFlag.Stop; LastPFlag = new Plugin.Geolocator.Abstractions.Position(); if (ifDataReset == true) { platformRoad = new object();//is delete RouteCoordinates.Clear(); LastCoordinates.Clear(); DrawPoint = null; LastPFlag = null; } AppGeolocator.Current.PositionChanged -= PositionChanged; AppGeolocator.Current.PositionError -= PositionError; await AppGeolocator.StopListeningAsync(MyGeoFlag, stopGeolocator); }