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 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); } }