/// <summary> /// Updates location pins on the map. /// </summary> private void UpdateLocations () { assignmentViewModel.LoadAssignmentsAsync ().ContinueWith (_ => { RunOnUiThread (() => { int i = 0; foreach (var item in assignmentViewModel.Assignments) { var overlay = new OverlayItem (new GeoPoint (item.Latitude.ToIntE6 (), item.Longitude.ToIntE6 ()), item.CompanyName, string.Format ("{0} {1}, {2} {3}", item.Address, item.City, item.State, item.Zip)); Drawable drawable = null; switch (item.Status) { case AssignmentStatus.Hold: drawable = Resources.GetDrawable (Resource.Drawable.AcceptedAssignmentIcon); break; default: drawable = Resources.GetDrawable (Resource.Drawable.NewAssignmentIcon); break; } var mapoverlay = new MapOverlayItem (this, drawable, overlay, mapView); mapoverlay.AssignmentIndex = i; mapView.Overlays.Add (mapoverlay); i++; } if (assignmentViewModel.ActiveAssignment != null) { var activeOverlay = new OverlayItem (new GeoPoint (assignmentViewModel.ActiveAssignment.Latitude.ToIntE6 (), assignmentViewModel.ActiveAssignment.Longitude.ToIntE6 ()), assignmentViewModel.ActiveAssignment.CompanyName, string.Format ("{0} {1}, {2} {3}", assignmentViewModel.ActiveAssignment.Address, assignmentViewModel.ActiveAssignment.City, assignmentViewModel.ActiveAssignment.State, assignmentViewModel.ActiveAssignment.Zip)); var mapoverlay = new MapOverlayItem (this, Resources.GetDrawable (Resource.Drawable.ActiveAssignmentIcon), activeOverlay, mapView); mapoverlay.AssignmentIndex = -1; mapView.Overlays.Add (mapoverlay); } }); }); }
/// <summary> /// Enable location tracking and place any overlays /// </summary> protected override void OnResume () { base.OnResume (); myLocation.EnableMyLocation (); if (assignment != null) { var overlayItem = new OverlayItem (new GeoPoint (assignment.Latitude.ToIntE6 (), assignment.Longitude.ToIntE6 ()), assignment.CompanyName, string.Format ("{0} {1}, {2} {3}", assignment.Address, assignment.City, assignment.State, assignment.Zip)); MapOverlayItem overlay = new MapOverlayItem (this, Resources.GetDrawable (Resource.Drawable.ActiveAssignmentIcon), overlayItem, mapView, true); mapView.Overlays.Add (overlay); } var dialog = new AlertDialog.Builder (this) .SetTitle ("Google Maps") .SetMessage (Resources.GetString (Resource.String.GoogleMapsKeyIssue)) .SetPositiveButton ("Ok", (sender, e) => { }) .Show (); }