【Xamarin.Forms】 グーグルマップと連携して検索を楽にする
はじめに
初めまして、sunn-sudoです。
青春18切符を購入して、西日本を巡っておりました。
知らない土地へ行くと、夜に泊まる漫画喫茶や近くの駅が気になって、
同じ検索ワードで3回ほど、グーグルマップで検索していました(;・∀・)
何度も同じ検索ワードをスマホで打つのは面倒くさい..
本文
開発環境
今回は、Androidアプリ開発に【Xamarin.Forms】を活用します。
【Xamarin.Forms】とは、
開発環境:Visual Studio
開発言語:C#
の構成となっています。
ソースコード
MainPage.xaml
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AppGoogleMap.MainPage"
Title="Native map app">
<StackLayout Margin="10">
<Label Text="現在地周辺のスポットを検索します。" />
<Button Text="銭湯" Clicked="OnButtonSearch" />
<Button Text="温泉" Clicked="OnButtonSearch" />
<Button Text="ゲーセン" Clicked="OnButtonSearch" />
<Button Text="ランチ" Clicked="OnButtonSearch" />
<Button Text="漫画喫茶" Clicked="OnButtonSearch" />
</StackLayout>
</ContentPage>
MainPage.xaml.cs
using System;
using Xamarin.Essentials;
using Xamarin.Forms;
using Plugin.Geolocator;
using Plugin.Geolocator.Abstractions;
namespace AppGoogleMap
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
async void OnButtonSearch(object sender, EventArgs e)
{
if (Device.RuntimePlatform == Device.Android)
{
try
{
IGeolocator locator = CrossGeolocator.Current;
// 1. 50mの精度に指定
// locator.DesiredAccuracy = 50;
Position position = await locator.GetPositionAsync();
string result = position.Latitude.ToString() + ',' + position.Longitude.ToString();
// タップしたボタンのテキストを取得
string search_text = ((Button)sender).Text;
// 現在地の座標を基準にグーグルマップ検索を行う
await Launcher.OpenAsync("geo:" + result + "?q=" + search_text);
}
catch
{
// 位置情報権限が許可されていない場合
await DisplayAlert("確認", "位置情報をオンにしてください。", "OK");
}
}
}
}
}
動作内容
MainPage.xaml
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AppGoogleMap.MainPage"
Title="Native map app">
<StackLayout Margin="10">
<Label Text="現在地周辺のスポットを検索します。" />
<Button Text="銭湯" Clicked="OnButtonSearch" />
<Button Text="温泉" Clicked="OnButtonSearch" />
<Button Text="ゲーセン" Clicked="OnButtonSearch" />
<Button Text="ランチ" Clicked="OnButtonSearch" />
<Button Text="漫画喫茶" Clicked="OnButtonSearch" />
</StackLayout>
</ContentPage>
MainPage.xaml.cs
using System;
using Xamarin.Essentials;
using Xamarin.Forms;
using Plugin.Geolocator;
using Plugin.Geolocator.Abstractions;
namespace AppGoogleMap
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
async void OnButtonSearch(object sender, EventArgs e)
{
if (Device.RuntimePlatform == Device.Android)
{
try
{
IGeolocator locator = CrossGeolocator.Current;
// 1. 50mの精度に指定
// locator.DesiredAccuracy = 50;
Position position = await locator.GetPositionAsync();
string result = position.Latitude.ToString() + ',' + position.Longitude.ToString();
// タップしたボタンのテキストを取得
string search_text = ((Button)sender).Text;
// 現在地の座標を基準にグーグルマップ検索を行う
await Launcher.OpenAsync("geo:" + result + "?q=" + search_text);
}
catch
{
// 位置情報権限が許可されていない場合
await DisplayAlert("確認", "位置情報をオンにしてください。", "OK");
}
}
}
}
}
「銭湯」をタップすると..
グーグルマップの検索文字として扱われる。
参考
完成版はこちらです
Author And Source
この問題について(【Xamarin.Forms】 グーグルマップと連携して検索を楽にする), 我々は、より多くの情報をここで見つけました https://qiita.com/sunn-sudo/items/6bef0f7169b73d4e06e2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .