3

通りの名前で経度と緯度を取得する必要があります。私は、Geocoderがその仕事をできることを見ました。ドキュメントには、「Geocoder クラスには、コア Android フレームワークに含まれていないバックエンド サービスが必要です」と記載されています。つまり、Geocoder が Android デバイスに実装されているかどうかはわかりません。

私の質問は、Geocoder の実装がどの程度普及しているかということです。Geocoder を搭載していないデバイスが非常に少ない場合は、それで問題ありませんが、デバイスが多数ある場合は、アプリのこの機能を再考する必要があります。


4

2 に答える 2

2

これを決定するには、GeoCoder クラスの isPresent() メソッドを使用する必要があります。

http://developer.android.com/reference/android/location/Geocoder.html#isPresent()

于 2013-12-19T10:42:17.880 に答える
1

GeoCoder クライアントは Google マップと共に含まれているため、Google マップを搭載したすべてのデバイスには、機能する GeoCoder 実装が必要です。概して、Android デバイスには Google マップがインストールされています。それ以外には、Google マップがなく、他の GeoCoder バックエンドが利用可能である可能性があります。このような場合、次のコードを使用して、デバイスに動作中の GeoCoder 実装があるかどうかを判断できます。

final Geocoder geocoder = new Geocoder(this);
final String locName = "1600 Amphitheatre Parkway, Mountain View, CA";
try {
    final List<Address> list = geocoder.getFromLocationName(locName, 1);
    if ( ! (list == null || list.isEmpty()) ) {
        final Address address = list.get(0);
        System.out.println("Geocoder backend present, (lat,lon) = (" + address.getLatitude() + ", " + address.getLongitude() + ")");
    }
    else {
        System.out.println("Geocoder backend not present");
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
于 2012-08-25T14:03:56.483 に答える