💈
ARDK Wayspotの場所名と画像写真を取得する方法
ARDKでWasySpotの場所名と画像を取得する方法
Wayspotなどの概要は前回の記事に記載しました。
前回の記事と同様にICoverageClientを使用します。
ICoverageClientを使用してRequestCoverageAreasメソッドを使用すると、コールバックとしてWayspotの情報を取得できます。
private ICoverageClient _coverageClient;
private RuntimeEnvironment _runtimeEnvironment = RuntimeEnvironment.Default;
private ILocationService _locationService; // 現在地を取得するために必要
private int _queryRadius = 2000; // WaySpotを探索する半径(m)
private void Start()
¥{
_locationService = LocationServiceFactory.Create();
_coverageClient = CoverageClientFactory.Create(_runtimeEnvironment);
_coverageClient.RequestCoverageAreas(_locationService.LastData, _queryRadius, GetAreasResult);
}
ここで得られた結果から、Wayspotにそれぞれ割り振られた識別子リストを取得します。
private void GetAreaResult(CoverageAreasResult areasResult)
{
foreach (var area in areasResult.Areas)
{
// wayspotに割り振られた識別子リスト
var targetIds = area.LocalizationTargetIdentifiers;
}
この識別子リストを引数にICoverageClientのReqestLocalizationTargetAsyncを呼び出します。
var targetIds = area.LocalizationTargetIdentifiers;
_coverageClient.RequestLocalizationTargetsAsync(targetIds).ContinueWith(result => {...});
これによりLocalizationTargetsResultを取得できました。識別子に対応したARDKのサーバーに保存されたWaySpotのローカライズされたデータが辞書型として格納されています。
あとは先ほど取得した識別子からひとつひとつLocalizationTargetを取得するだけです。
foreach (string targetId in targetIds)
{
LocalizationTarget target = targetsResult.ActivationTargets[targetId];
string title = target.Name; // Wayspotの場所名 ex)〇〇公園
}
また、Wayspotの写真もLocalizationTargetから取得することができます。
private string GetAreaTitle(
LocalizationTargetsResult targetsResult,
string[] targetIds)
{
foreach (string targetId in targetIds)
{
LocalizationTarget target = targetsResult.ActivationTargets[targetId];
target.DownloadImage((int)500, (int)500, wayspotImage =>
{
// wayspotImageをsetする等
});
}
}
おそらくARDKでWayspotを使用する場合、ユーザーに対してどこにWayspotがあるのかをわかりやすく伝える必要があります。場所名や画像を一緒に伝えてあげたほうがユーザーも嬉しいかと思います。
最後まで読んでいただきありがとうございました。
Discussion