public PoiViewItemList(IEnumerable <Poi> poiList, GpsLocation myLocation, IGpsUtilities iGpsUtilities) { if (poiList != null) { foreach (var item in poiList) { var poiViewItem = new PoiViewItem(item); poiViewItem.GpsLocation.Bearing = iGpsUtilities.Bearing(myLocation, poiViewItem.GpsLocation); poiViewItem.AltitudeDifference = CompassViewUtils.GetAltitudeDifference(myLocation, poiViewItem.GpsLocation); poiViewItem.GpsLocation.Distance = iGpsUtilities.Distance(myLocation, poiViewItem.GpsLocation); poiViewItem.GpsLocation.GetVerticalViewAngle(myLocation); Add(poiViewItem); } } }
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); if (requestCode == EditActivity.REQUEST_ADD_POI) { if (resultCode == EditActivity.RESULT_OK) { var id = data.GetLongExtra("Id", 0); var item = Context.Database.GetItem(id); var poiViewItem = new PoiViewItem(item); poiViewItem.GpsLocation.Bearing = _iGpsUtilities.Bearing(Context.MyLocation, poiViewItem.GpsLocation); poiViewItem.AltitudeDifference = CompassViewUtils.GetAltitudeDifference(Context.MyLocation, poiViewItem.GpsLocation); poiViewItem.GpsLocation.Distance = _iGpsUtilities.Distance(Context.MyLocation, poiViewItem.GpsLocation); _adapter.Add(poiViewItem); } if (resultCode == EditActivity.RESULT_OK_AND_CLOSE_PARENT) { SetResult(RESULT_OK_AND_CLOSE_PARENT); Finish(); } } if (requestCode == EditActivity.REQUEST_EDIT_POI) { if (resultCode == EditActivity.RESULT_OK) { var id = data.GetLongExtra("Id", 0); var itemfromDb = Context.Database.GetItem(id); var itemfromAdapter = _adapter.GetPoiItem(id); itemfromAdapter.Poi = itemfromDb; _adapter.NotifyDataSetChanged(); } if (resultCode == EditActivity.RESULT_OK_AND_CLOSE_PARENT) { SetResult(RESULT_OK_AND_CLOSE_PARENT); Finish(); } } }
/// <summary> /// Creates PoiViewItemList with distance calcalted from current location, and filters-out items not matching maxDistance and minAltitude parameters. /// </summary> /// <param name="poiList">List of Pois</param> /// <param name="location">My current location</param> /// <param name="maxDistance">Max distance in kilometers</param> /// <param name="minAltitude">Min altitude (progress 100 = 1600m)</param> public PoiViewItemList(IEnumerable <Poi> poiList, GpsLocation myLocation, double maxDistance, List <PoiCategory> categories, IGpsUtilities iGpsUtilities) { foreach (var item in poiList) { var poiViewItem = new PoiViewItem(item); poiViewItem.GpsLocation.Bearing = iGpsUtilities.Bearing(myLocation, poiViewItem.GpsLocation); poiViewItem.AltitudeDifference = CompassViewUtils.GetAltitudeDifference(myLocation, poiViewItem.GpsLocation); poiViewItem.GpsLocation.Distance = iGpsUtilities.Distance(myLocation, poiViewItem.GpsLocation); poiViewItem.GpsLocation.GetVerticalViewAngle(myLocation); if (poiViewItem.GpsLocation.Distance > maxDistance * 1000) { continue; } if (!categories.Contains(poiViewItem.Poi.Category)) { continue; } Add(poiViewItem); } }