caiwb1990 发表于 2013-1-14 18:03:30

Android Google Api 获取地址

我们获取Location的目的之一肯定是有获取这个位置的详细地址,而我们有了Location在来获取Address就相对简单多了,因为GoogleApi已经封装好了方法,我们只需呀通过Location获取GeoPoint,然后在通过GeoPoint来获取我们想要的Address.


第一步新建一个Android工程LocationDemo,

第二步: 修改main.xml
    <?xml version="1.0" encoding="utf-8"?>      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"          android:orientation="vertical"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          >      <TextView         android:id="@+id/longitude"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="longitude:"          />      <TextView          android:id="@+id/latitude"            android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="latitude:"          />      <TextView          android:id="@+id/address"            android:layout_width="fill_parent"         android:layout_height="wrap_content"         />      </LinearLayout>

第三步:修改LocationDemo.java

    package cn.caiwb.address    import java.util.List;      import java.util.Locale;      import com.google.android.maps.GeoPoint;      import android.app.Activity;      import android.content.Context;      import android.location.Address;      import android.location.Geocoder;      import android.location.Location;      import android.location.LocationManager;      import android.os.Bundle;      import android.widget.TextView;      public class LocationDemo extends Activity {                   private TextView longitude;          private TextView latitude;          private TextView address;          @Override          public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.main);                            longitude = (TextView)findViewById(R.id.longitude);            latitude = (TextView)findViewById(R.id.latitude);            address = (TextView)findViewById(R.id.address);                            Location mLocation = getLocation(this);            GeoPoint gp = getGeoByLocation(mLocation);            Address mAddress = getAddressbyGeoPoint(this, gp);                                                    longitude.setText("Longitude: " + mLocation.getLongitude());            latitude.setText("Latitude: " + mLocation.getLatitude());            address.setText("Address: " + mAddress.getCountryName()+"," + mAddress.getLocality());          }                  //Get the Location by GPS or WIFI          public Location getLocation(Context context) {            LocationManager locMan = (LocationManager) context                      .getSystemService(Context.LOCATION_SERVICE);            Location location = locMan                      .getLastKnownLocation(LocationManager.GPS_PROVIDER);            if (location == null) {                  location = locMan                        .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);            }            return location;          }          //通过Location获取GeoPoint         publicGeoPoint getGeoByLocation(Location location) {               GeoPoint gp = null;               try {                   if (location != null) {                     double geoLatitude = location.getLatitude() * 1E6;                     double geoLongitude = location.getLongitude() * 1E6;                     gp = new GeoPoint((int) geoLatitude, (int) geoLongitude);                   }               } catch (Exception e) {                   e.printStackTrace();               }               return gp;         }         //通过GeoPoint来获取Address         publicAddress getAddressbyGeoPoint(Context cntext, GeoPoint gp) {               Address result = null;               try {                   if (gp != null) {                     Geocoder gc = new Geocoder(cntext, Locale.CHINA);                                             double geoLatitude = (int) gp.getLatitudeE6() / 1E6;                     double geoLongitude = (int) gp.getLongitudeE6() / 1E6;                                              List<Address> lstAddress = gc.getFromLocation(geoLatitude,                               geoLongitude, 1);                     if (lstAddress.size() > 0) {                           result = lstAddress.get(0);                     }                   }               } catch (Exception e) {                   e.printStackTrace();               }               return result;         }      }

第四步:最重要一步在AndroidManiefest.xml中导入Google Api库
<uses-library android:name="com.google.android.maps" />
页: [1]
查看完整版本: Android Google Api 获取地址