protected async override void AddPushpinToMap(CustomPin pin) { try { var geoLocation = CoordinateConverter.ConvertToNative(pin.Position); var mapIcon = new MapIcon(); mapIcon.CollisionBehaviorDesired = MapElementCollisionBehavior.RemainVisible; mapIcon.Location = geoLocation; mapIcon.NormalizedAnchorPoint = new Point(0.5, 1.0); mapIcon.ZIndex = 1000; if (pin.Icon != null) { var iconImageUri = default(Uri); iconImageUri = new Uri("ms-appx:///Assets/" + pin.Icon); RandomAccessStreamReference stream = RandomAccessStreamReference.CreateFromUri(iconImageUri); mapIcon.Image = await stream.ScaleTo(40, 58); } _nativeMap.MapElements.Add(mapIcon); _pushpinMappings.Add(mapIcon, pin.Id); if (pin.Duration.HasValue) { ShowPushpinInformationPanel(pin); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
private void SetMapIconPosition(DependencyObject icon, Position geoLocation, Point anchorPoint) { var nativeCoordinate = CoordinateConverter.ConvertToNative(geoLocation); MapControl.SetLocation(icon, nativeCoordinate); MapControl.SetNormalizedAnchorPoint(icon, anchorPoint); }
protected override void DrawCalculatedRouteInMap(RouteModel route) { var drawingManager = new MapDrawingManager(FormsMap, route.Color); _nativeMap.OverlayRenderer = drawingManager.GetOverlayRenderer; var nativeCoordinates = route.RoutePoints.Select(p => CoordinateConverter.ConvertToNative(p)); _currentUserRoute = MKPolyline.FromCoordinates(nativeCoordinates.ToArray()); _nativeMap.AddOverlay(_currentUserRoute); }
protected override void DrawCalculatedRouteInMap(CarPool.Clients.Core.Maps.Model.RouteModel route) { var polyLine = new PolylineOptions(); foreach (var position in route.RoutePoints) { LatLng nativePosition = CoordinateConverter.ConvertToNative(position); polyLine.Add(nativePosition); } polyLine.InvokeColor(route.Color.ToAndroid()); _currentUserRoute = _nativeMap.AddPolyline(polyLine); }
public override async Task <IEnumerable <Position> > CalculateRoute(RouteModel route) { Geopoint nativeFrom = CoordinateConverter.ConvertToNative(route.From); Geopoint nativeTo = CoordinateConverter.ConvertToNative(route.To); // add route starts List <Geopoint> routeWaypoints = new List <Geopoint>() { nativeFrom }; // add route waypoints if any if (route.WayPoints != null && route.WayPoints.Any()) { foreach (var point in route.WayPoints) { routeWaypoints.Add(CoordinateConverter.ConvertToNative(point)); } } // add route ends routeWaypoints.Add(nativeTo); MapRouteFinderResult routeResult = await MapRouteFinder.GetDrivingRouteFromWaypointsAsync( routeWaypoints, MapRouteOptimization.Time, MapRouteRestrictions.None); List <Position> result = new List <Position>(); IReadOnlyList <BasicGeoposition> routePositions = routeResult?.Route?.Path?.Positions; route.Distance = routeResult?.Route?.LengthInMeters ?? 0; route.Duration = routeResult?.Route?.EstimatedDuration.TotalMinutes ?? 0; if (routePositions?.Any() == true) { foreach (BasicGeoposition position in routePositions) { result.Add(new Position(position.Latitude, position.Longitude)); } } return(result); }
public override async Task <IEnumerable <Position> > CalculateRoute(RouteModel route) { List <Position> result = new List <Position>(); var nativeFrom = CoordinateConverter.ConvertToNative(route.From); var nativeTo = CoordinateConverter.ConvertToNative(route.To); var actualOriginPoint = nativeFrom; // ios waypoints not nativelly supported if (route.WayPoints != null && route.WayPoints.Any()) { foreach (var waypoint in route.WayPoints) { var actualDestinationPoint = CoordinateConverter.ConvertToNative(waypoint); result.AddRange(await RequestMKMapRoutePoints(route, actualOriginPoint, actualDestinationPoint)); actualOriginPoint = actualDestinationPoint; } } result.AddRange(await RequestMKMapRoutePoints(route, actualOriginPoint, nativeTo)); return(result); }