0

場所の経度と緯度があるときに、AndroidのGoogleマップAPIから場所の名前を見つけようとしています。私が達成したいのは、場所の名前を取得した後、友人にテキストメッセージを送信して、現在の場所を伝えたいということです。ジオコーダー サービスをオンにする必要があるかどうかはわかりません。

これは私がこれまで行ってきたことであり、今は立ち往生しています。

class mylocationlistener implements LocationListener
{


    @SuppressLint("NewApi")
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        if(location != null)
        {
            Double longi = location.getLongitude();
            Double lat = location.getLatitude();
            String str = "";

            str= "Longitude=" + longi + ", Latitude=" + lat;
            Toast.makeText(getApplicationContext(),str,Toast.LENGTH_LONG).show();

            Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());

            boolean abc = Geocoder.isPresent();
            try {
                List<Address> addresses = geocoder.getFromLocation(lat, longi, 1);
                if(!addresses.isEmpty())
                {
                str = addresses.get(0).getLocality() + addresses.get(0).getAddressLine(1)+ addresses.get(0).getAddressLine(2);
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Toast.makeText(getApplicationContext(),str, Toast.LENGTH_LONG).show();
        }
    }
   }
4

1 に答える 1

0

これでほぼ完了だと思いますが、以前にこれを処理する方法は、次のコードを使用することです。

public static String getAddressStringFromLocation(Context context, Location location) {
    GeoPoint gp = new GeoPoint((int) (location.getLatitude() * 1e6), 
            (int) (location.getLongitude() * 1e6)); 
    return getAddressStringFromGeoPoint(context, gp);
}

public static String getAddressStringFromGeoPoint(Context context, GeoPoint point) {
    StringBuilder sb = new StringBuilder();
    Address ad = getAddressFromGeoPoint(context, point);
    if(ad != null && ad.getMaxAddressLineIndex() > 0) {
        for(int i = 0, max = ad.getMaxAddressLineIndex(); i < max; i++) {
            sb.append(ad.getAddressLine(i));
        }
        sb.append(ad.getThoroughfare());
        return sb.toString();
    } else {
        return null;
    }
}

public static Address getAddressFromGeoPoint(Context context, GeoPoint point){
    Geocoder geoCoder = new Geocoder(context, Locale.CHINA);
    Address address = null;
    try {
        List<Address> addresses = geoCoder.getFromLocation(point.getLatitudeE6() / 1E6, point.getLongitudeE6() / 1E6, 1);
        address = addresses.get(0);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return address;
}
于 2013-04-03T14:01:22.450 に答える