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));
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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;
 }