Geocoding API menyediakan informasi geocode placemark (alamat tertentu) menjadi koordinat latitude dan longitude, dan sebaliknya koordinat menjadi placemark (reverse geocode coordinates).
1. Buat halaman baru dengan nama XEGeocoding dan tambahkan kode xaml berikut:
<StackLayout> <Entry x:Name="txtAlamat" Placeholder="Masukan Alamat" /> <Button x:Name="btnGeocoding" Text="Geocoding" Clicked="btnGeocoding_Clicked" /> </StackLayout>
2. Kemudian tambahkan code behind berikut untuk menampilkan geocode.
private async void btnGeocoding_Clicked(object sender, EventArgs e) { try { var address = txtAlamat.Text; var locations = await Geocoding.GetLocationsAsync(address); var location = locations?.FirstOrDefault(); if (location != null) { await DisplayAlert("Keterangan", $"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}", "OK"); } } catch (FeatureNotSupportedException fnsEx) { await DisplayAlert("Error", fnsEx.Message, "OK"); } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } }
3. Kemudian jalankan aplikasi dan ketikan alamat tertentu, maka akan ditampilkan posisi latitude dan longitude dari alamat tersebut.
4. Anda juga dapat melakukan reverse geocoding dari koordinat latitude dan longitude.
5. Tambahkan entry pada halaman xaml untuk memasukan data latitude dan longitude.
private async void btnReverseGeo_Clicked(object sender, EventArgs e) { try { double lat = Convert.ToDouble(txtLatitude.Text); double lon = Convert.ToDouble(txtLongitude.Text); var placemarks = await Geocoding.GetPlacemarksAsync(lat, lon); var placemark = placemarks?.FirstOrDefault(); if (placemark != null) { var geocodeAddress = $"AdminArea: {placemark.AdminArea}\n" + $"CountryCode: {placemark.CountryCode}\n" + $"CountryName: {placemark.CountryName}\n" + $"FeatureName: {placemark.FeatureName}\n" + $"Locality: {placemark.Locality}\n" + $"PostalCode: {placemark.PostalCode}\n" + $"SubAdminArea: {placemark.SubAdminArea}\n" + $"SubLocality: {placemark.SubLocality}\n" + $"SubThoroughfare: {placemark.SubThoroughfare}\n" + $"Thoroughfare: {placemark.Thoroughfare}\n"; await DisplayAlert("Keterangan",geocodeAddress,"OK"); } } catch (FeatureNotSupportedException fnsEx) { await DisplayAlert("Error", fnsEx.Message, "OK"); } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "OK"); } }