Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
private async void OnSearchButtonPressed(object sender, EventArgs e)
{
// 検索バーから入力された地名から緯度・経度を取得する
var positions = await geocoder.GetPositionsForAddressAsync(searchBar.Text);
// 座標は複数とれる可能性があるが、今回は先頭の座標を利用する
var position = positions.FirstOrDefault();
// 座標が一つ以上とれていた場合のみ以下を処理する
if (position != null)
{
// 該当地点へ移動する
map.MoveToRegion(
MapSpan.FromCenterAndRadius(
position,
Distance.FromMiles(0.2)));
// 座標から住所を逆引きする
var addresses = await geocoder.GetAddressesForPositionAsync(position);
// 住所は複数とれる可能性があるが、今回は先頭の住所を利用する
var address = addresses.FirstOrDefault();
// 住所が一つ以上とれていた場合、以下を処理する
if (address != null)
{
// 以前設定したピンがあればピンを除去する
map.Pins.Clear();
// 新たにピンを作成し地図へ登録する
var pin = new Pin
{
Type = PinType.Place, // ピンの形状
Position = position, // ピンを登録する座標
Label = searchBar.Text, // ピンのラベル。検索条件を設定
Address = address.Replace("\n", "") // ピンの住所。取得した住所の先頭が「日本\n~」となるので改行を除去する
};
map.Pins.Add(pin);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment