예제 #1
0
        private async void GetATMs(string location)
        {
            string url = $"https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={location}&radius=1500&type=bank&keyword=sterling&key=AIzaSyDYdbG_jHO5TOZcIPkKHsF0uD6po9AWvik";

            var client = new HttpClient();

            try
            {
                string response = await client.GetStringAsync(url);

                var resultObject = JsonConvert.DeserializeObject <ATMs>(response);

                var coordSplit = location.Split(',');

                double lat1 = double.Parse(coordSplit[0]);
                double lon1 = double.Parse(coordSplit[1]);

                if (resultObject.status.ToLower() == "ok")
                {
                    foreach (var place in resultObject.results)
                    {
                        if (place.name.ToLower().Contains("sterling"))
                        {
                            atmLocations.Add(new ATMLocation
                            {
                                PlaceName = place.name,
                                Address   = place.vicinity,
                                Location  = place.geometry.location,
                                Distance  = $"{ATMLocation.GetDistance(lat1, lon1, place.geometry.location.lat, place.geometry.location.lng, DistanceUnit.Kiliometers).ToString("N2")}km",
                                OpenNow   = GetOpenHours(place?.opening_hours?.open_now)
                            });
                        }
                    }

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        ATMPlacesListView.ItemsSource = atmLocations;

                        //Update pin on the map
                        foreach (var item in atmLocations)
                        {
                            map.Pins.Add(new Pin
                            {
                                Position = new Position(item.Location.lat, item.Location.lng),
                                Label    = item.PlaceName,
                                Address  = item.Address,
                                Type     = PinType.Place
                            });
                        }

                        map.SelectedPin = map.Pins.ElementAt(0);
                        map.MoveToRegion(MapSpan.FromCenterAndRadius(map.Pins.ElementAt(0).Position, Distance.FromMeters(500)), true);
                        LoadingView.IsVisible = false;
                    });
                }
            }
            catch (Exception ex)
            {
                LoadingView.IsVisible = false;
                MessageDialog.Show("ATM Places", "Error getting ATM locations at this time.", DialogType.Error, "Retry", () => { GetATMs(location); }, "Cancel", null);

                var log = ex.Message;
                await BusinessLogic.Log(ex.ToString(), "Error getting ATM Locations", url, "", "", "FindATMPage");
            }
        }