質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

2613閲覧

C# ASP.NET Core 緯度・経度を住所に変換したい

akarinrin_

総合スコア7

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/11/15 11:02

前提・実現したいこと

ASP.NET Core Razor Pagesで個人的にアプリを開発しています。
ユーザーがボタンを押した際に、ユーザー端末のGPSで位置情報を取得し、現在住所を表示する処理を実装したく、方法を探していたところ、System.Device名前空間を見つけました。GeoCoordinateWatcherクラスとCivicAddressResolverクラスを使用して、緯度・経度を取得、それを住所に変換できるようですが、なぜかうまく変換ができません。原因が分かる方はいらっしゃいますでしょうか。また、代替手段についてもご教示頂ければ幸いです。

発生している問題・エラーメッセージ

具体的には、Microsoftの公式ドキュメントの同期的に処理をするサンプルプログラムの例を基に処理を理解しようとしていたのですが、そもそも、公式ドキュメントのサンプルプログラムをそのまま.NET Frameworkコンソールアプリケーションで作成し、実行しても、結果が取得できません。

試したこと

ステップ実行してみると、
GPSで緯度・経度を取得するwatcher.Position.Locationは動作しており、

該当のソースコード

C#

1if (watcher.Position.Location.IsUnknown == false)

緯度・経度を住所に変換するResolveAddressがIsUnknownを返してしまいます。

該当のソースコード

C#

1CivicAddress address = resolver.ResolveAddress(watcher.Position.Location);

なぜ、緯度・経度を引数にしても住所が返されないのか、原因をご存知の方はいらっしゃいますでしょうか。
また、ResolveAddressメソッドが利用できない場合、Google Maps APIの利用を考えているのですが、他にオススメの方法などはありますでしょうか。

補足情報(FW/ツールのバージョンなど)

サンプルプログラムを試すためにConsole Application(.NET Framework)を使いましたが、実装したいのはASP.NET Core Razor Pagesです。
Visual Studio 2019
Windows 10 Pro

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/11/15 23:13 編集

.NET Core / .NET のバージョンを書いてください。 質問者さんが参考にした記事によると、CivicAddressResolver クラスは .NET Framework 4.0 ~ 4.8 用とのことですが? ASP.NET Core アプリは web サーバーで動くアプリですがそこは認識してますか? そこに大きな思い違いがあって、そもそも不可能なことを考えていませんか? そうでないと言うことなら、その辺り (クライアント、サーバー全体的な構成、各々の役割など) を詳しく説明いただけませんか?
guest

回答1

0

CivicAddressResolverはほぼダミーです。GeoLocationが下位サービス(native location provider api)から国や都市名が提供されているとき、それを返すだけの代物なうえ、GPSとかのプロバイダは都市名をくれないので。
https://github.com/microsoft/referencesource/blob/master/System.Device/CivicAddressResolver.cs

ASP.NETであれば、逆ジオコーディングをGoogleとかyahooとかbingとかのApiにまわすか、国土地理院あたりの市町村区域データから自分で判定するかしかないです。

投稿2021/11/15 16:07

matukeso

総合スコア1590

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問