135

町または地域の緯度と経度の座標がある場合、Google マップで都市名を取得するにはどうすればよいですか?

緯度、経度を使ってみたところ、国は出たのですが、都市名の出方がわかりません。

4

15 に答える 15

247

オブジェクトからメソッドGeocoderを呼び出すことができますgetFromLocation(double, double, int)Addressメソッドを持つオブジェクトのリストを返しますgetLocality()

Geocoder gcd = new Geocoder(context, Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
if (addresses.size() > 0) {
    System.out.println(addresses.get(0).getLocality());
}
else {
   // do your stuff
}
于 2010-02-19T13:03:54.273 に答える
12

これを試して

  List<Address> list = geoCoder.getFromLocation(location
            .getLatitude(), location.getLongitude(), 1);
    if (list != null & list.size() > 0) {
        Address address = list.get(0);
        result = address.getLocality();
        return result;
于 2013-06-03T04:45:43.983 に答える
8

以下のコードを試してみてください:-

CityAsyncTask cst = new CityAsyncTask(HomeScreenUserLocation.this,
                latitude, longitude);
        cst.execute();

        String lo = null;
        try {
            lo = cst.get().toString();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

およびAsyncTask

public class CityAsyncTask extends AsyncTask<String, String, String> {
    Activity act;
    double latitude;
    double longitude;

    public CityAsyncTask(Activity act, double latitude, double longitude) {
        // TODO Auto-generated constructor stub
        this.act = act;
        this.latitude = latitude;
        this.longitude = longitude;
    }

    @Override
    protected String doInBackground(String... params) {
        String result = "";
        Geocoder geocoder = new Geocoder(act, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(latitude,
                    longitude, 1);
            Log.e("Addresses", "-->" + addresses);
            result = addresses.get(0).toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

    }
}
于 2013-05-30T12:43:26.700 に答える
1

この問題を解決する新しい方法を得ました。ここでは、Google http サービスを使用して、経度と緯度に基づいて位置の合計情報を取得しました。緯度と経度を URL と API キー (例: latlng=21.1497409, 79.08747970000002 & key=YOUR API KEY) で渡すだけです。ExampleServiceこれがクラスでの私のgetサービスです

 getService(url) {

    return this.http.get(url).map((data: any) => data.json())

}

これは、好きな場所に置くことができ、位置データが必要なコンポーネントから以下のサービスを呼び出すだけです

this._exampleService.getService("https://maps.googleapis.com/maps/api/geocode/json?latlng=21.1497409, 79.08747970000002&key=YOUR API KEY").subscribe(getplaceData => {
            var placeDataDest: any;
            placeDataDest = getplaceData;
            console.log("i got place id yeee " + placeDataDest['results'][0]['place_id']);
            console.log("i got place details yeee " + placeDataDest['results']);
        });

同様に都市名を見つけてください....これが役に立つことを願っています

于 2017-04-06T06:38:24.687 に答える