async public void ShowPinDetailInfo(string id) { await Navigation.PopToRootAsync(); tmpSpaceData detailInfo = null; foreach (var item in AppData.Spaces.tmpSpaceCollection) { if (item.ID == id) { detailInfo = item; break; } } if (detailInfo == null) { return; } var detailInfoPage = new DetailPage() { BindingContext = new DetailInfoViewModel(detailInfo) }; await Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(detailInfoPage)); }
async public Task <string> OnButtonSearched(CustomMap customMap, string searchText) { IsSearching = true; var result = await AppData.Spaces.GeocodeAddress(searchText); System.Diagnostics.Debug.WriteLine(result); if (result == "") { IsSearching = false; return("Not found"); } string[] index = result.Split('&'); var address = index[0]; var lat = Convert.ToDouble(index[1]); var lon = Convert.ToDouble(index[2]); var name = index[3]; AppData.Spaces.tmpSpaceCollection.Clear(); foreach (var item in AppData.Spaces.PostsCollection) { double value = GetDistance.DistanceFromMeToLocation(lat, lon, item.GeoLatitude, item.GeoLongitude); if (value <= 10) //within the 10 mi radius { tmpSpaceData tmp = new tmpSpaceData(item, lat, lon); AppData.Spaces.tmpSpaceCollection.Add(tmp); } } if (AppData.Spaces.tmpSpaceCollection.Count == 0) { IsSearching = false; return("No space nearby"); } AppData.Spaces.IsListDataUpdated = true; IsFirstime = true; IsSearching = false; IsBusy = true; await LoadPin(customMap); await Task.Delay(1000); var position = new Position(lat, lon); customMap.Pins.Add(new Pin { Label = "Search Location", Position = position, Address = address }); customMap.MoveToRegion(MapSpan.FromCenterAndRadius(position, Distance.FromMiles(1.2))); IsBusy = false; return("Found"); }
async public void RefreshPin(CustomMap customMap) { IsBusy = true; if (IsInitialized == false) { await Task.Delay(0); } IsInitialized = true; customMap.CustomPins = new List <CustomPin>(); double lat, lon; try { var locator = CrossGeolocator.Current; locator.DesiredAccuracy = 50; var p = await locator.GetPositionAsync(timeoutMilliseconds : 1000); lat = p.Latitude; lon = p.Longitude; } catch (Exception) { lat = 21.300; lon = -157.8167; } customMap.Pins.Clear(); AppData.Spaces.tmpSpaceCollection.Clear(); foreach (var item in AppData.Spaces.PostsCollection) { tmpSpaceData tmp = new tmpSpaceData(item, lat, lon); AppData.Spaces.tmpSpaceCollection.Add(tmp); var pin = new CustomPin { Pin = new Pin { Type = PinType.Place, Position = new Position(item.GeoLatitude, item.GeoLongitude), Label = item.Title, Address = item.StreetAddress }, Id = item.ID, Url = item.ImageURL }; customMap.CustomPins.Add(pin); customMap.Pins.Add(pin.Pin); } AppData.Spaces.IsListDataUpdated = true; IsBusy = false; }
async public Task <bool> GetSpaces() { bool isSuccess = false; //919 Ala Moana Blvd double lat = 21.2951427; double lon = -157.8609393; try { var locator = CrossGeolocator.Current; locator.DesiredAccuracy = 50; var p = await locator.GetPositionAsync(timeoutMilliseconds : 1000); lat = p.Latitude; lon = p.Longitude; } catch (Exception) { } try { AppData.Spaces.PostsCollection.Clear(); var token = await Get(RequestSpaces); var rootObject = JsonConvert.DeserializeObject <RootObject>(token); List <Post> posts = rootObject.posts; foreach (var post in posts) { var serialize = JsonConvert.SerializeObject(post); var deserializePosts = JsonConvert.DeserializeObject <Post>(serialize); SpaceData spacedata = new SpaceData(deserializePosts); AppData.Spaces.PostsCollection.Add(spacedata); tmpSpaceData tmp = new tmpSpaceData(spacedata, lat, lon); AppData.Spaces.tmpSpaceCollection.Add(tmp); //debugging may delete after Debug.WriteLine(post.title); } isSuccess = true; } catch (Exception) { isSuccess = false; } return(isSuccess); }
async void OnItemTapped(object sender, ItemTappedEventArgs e) { tmpSpaceData detailInfo = (tmpSpaceData)e.Item; var detailInfoPage = new DetailPage() { BindingContext = new DetailInfoViewModel(detailInfo) { Navigation = this.Navigation } }; await Navigation.PushModalAsync(detailInfoPage, true); }
public DetailInfoViewModel(tmpSpaceData spaceData) { temp = spaceData; }