EX09_06.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:5k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex09_06;
  2. import java.util.List;
  3. import java.util.Locale;
  4. import com.google.android.maps.GeoPoint;
  5. import com.google.android.maps.MapActivity;
  6. import com.google.android.maps.MapController;
  7. import com.google.android.maps.MapView;
  8. import android.location.Address;
  9. import android.location.Geocoder;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. public class EX09_06 extends MapActivity
  16. {
  17.   private MapController mMapController01;
  18.   private MapView mMapView01;
  19.   private Button mButton01,mButton02,mButton03;
  20.   private EditText mEditText01;
  21.   private int intZoomLevel=15;
  22.   private String TAG = "HIPPO_GEO_DEBUG";
  23.   
  24.   @Override
  25.   protected void onCreate(Bundle icicle)
  26.   {
  27.     // TODO Auto-generated method stub
  28.     super.onCreate(icicle);
  29.     setContentView(R.layout.main);
  30.     
  31.     mEditText01 = (EditText)findViewById(R.id.myEditText1);
  32.     mEditText01.setText
  33.     (
  34.       getResources().getText(R.string.str_default_address).toString()
  35.     );
  36.     
  37.     /* 创建MapView对象 */
  38.     mMapView01 = (MapView)findViewById(R.id.myMapView1);
  39.     mMapController01 = mMapView01.getController();
  40.     
  41.  // 设置MapView的显示选项(卫星、街道)
  42.     mMapView01.setSatellite(true);
  43.     mMapView01.setStreetView(true);
  44.     
  45.     mButton01 = (Button)findViewById(R.id.myButton1);
  46.     mButton01.setOnClickListener(new Button.OnClickListener()
  47.     {
  48.       @Override
  49.       public void onClick(View v)
  50.       {
  51.         // TODO Auto-generated method stub
  52.         if(mEditText01.getText().toString()!="")
  53.         {
  54.           refreshMapViewByGeoPoint
  55.           (
  56.             getGeoByAddress
  57.             (
  58.               mEditText01.getText().toString()
  59.             ),mMapView01,intZoomLevel,true
  60.           );
  61.         }
  62.       }
  63.     });
  64.     
  65.     /* 放大 */
  66.     mButton02 = (Button)findViewById(R.id.myButton2);
  67.     mButton02.setOnClickListener(new Button.OnClickListener()
  68.     {
  69.       @Override
  70.       public void onClick(View v)
  71.       {
  72.         // TODO Auto-generated method stub
  73.         intZoomLevel++;
  74.         if(intZoomLevel>mMapView01.getMaxZoomLevel())
  75.         {
  76.           intZoomLevel = mMapView01.getMaxZoomLevel();
  77.         }
  78.         mMapController01.setZoom(intZoomLevel);
  79.       }
  80.     });
  81.     
  82.     /* 缩小 */
  83.     mButton03 = (Button)findViewById(R.id.myButton3);
  84.     mButton03.setOnClickListener(new Button.OnClickListener()
  85.     {
  86.       @Override
  87.       public void onClick(View v)
  88.       {
  89.         // TODO Auto-generated method stub
  90.         intZoomLevel--;
  91.         if(intZoomLevel<1)
  92.         {
  93.           intZoomLevel = 1;
  94.         }
  95.         mMapController01.setZoom(intZoomLevel);
  96.       }
  97.     });
  98.     
  99.     /* 初次查询地点 */
  100.     refreshMapViewByGeoPoint
  101.     (
  102.       getGeoByAddress
  103.       (
  104.           getResources().getText(R.string.str_default_address).toString()
  105.       ),mMapView01,intZoomLevel,true
  106.     );
  107.   }
  108.   
  109.   private GeoPoint getGeoByAddress(String strSearchAddress)
  110.   {
  111.     GeoPoint gp = null;
  112.     try
  113.     {
  114.       if(strSearchAddress!="")
  115.       {
  116.         Geocoder mGeocoder01 = new Geocoder(EX09_06.this, Locale.getDefault());
  117.         List<Address> lstAddress = mGeocoder01.getFromLocationName(strSearchAddress, 1);
  118.         if (!lstAddress.isEmpty())
  119.         {
  120.           // Address[addressLines=[0:"U.S PIZZA",1:"15th Main Rd, Phase II, J P Nagar",2:"Bengaluru, Karnataka",3:"India"],feature=U.S PIZZA,admin=Karnataka,sub-admin=Bengaluru,locality=Bengaluru,thoroughfare=15th Main Rd,postalCode=null,countryCode=IN,countryName=India,hasLatitude=true,latitude=18.508933,hasLongitude=true,longitude=73.8042,phone=null,url=null,extras=null]
  121.           /*
  122.           for (int i = 0; i < lstAddress.size(); ++i)
  123.           {
  124.             Address adsLocation = lstAddress.get(i);
  125.             Log.i(TAG, "Address found = " + adsLocation.toString()); 
  126.             //lat = adsLocation.getLatitude();
  127.             //lon = adsLocation.getLongitude();
  128.           }
  129.           */
  130.           Address adsLocation = lstAddress.get(0);
  131.           double geoLatitude = adsLocation.getLatitude()*1E6;
  132.           double geoLongitude = adsLocation.getLongitude()*1E6;
  133.           gp = new GeoPoint((int) geoLatitude, (int) geoLongitude);
  134.         }
  135.         else
  136.         {
  137.           Log.i(TAG, "Address GeoPoint NOT Found.");
  138.         }
  139.       }
  140.     }
  141.     catch (Exception e)
  142.     { 
  143.       e.printStackTrace(); 
  144.     }
  145.     return gp;
  146.   }
  147.   
  148.   public static void refreshMapViewByGeoPoint(GeoPoint gp, MapView mv, int zoomLevel, boolean bIfSatellite)
  149.   {
  150.     try
  151.     {
  152.       mv.displayZoomControls(true);
  153.       /* 取得MapView的MapController */
  154.       MapController mc = mv.getController();
  155.       /* 移至该地理坐标地址 */
  156.       mc.animateTo(gp);
  157.       
  158.       /* 放大地图层级 */
  159.       mc.setZoom(zoomLevel);
  160.       
  161.       /* 设置MapView的显示选项(卫星、街道)*/
  162.       if(bIfSatellite)
  163.       {
  164.         mv.setSatellite(true);
  165.         mv.setStreetView(true);
  166.       }
  167.       else
  168.       {
  169.         mv.setSatellite(false);
  170.       }
  171.     }
  172.     catch(Exception e)
  173.     {
  174.       e.printStackTrace();
  175.     }
  176.   }
  177.   
  178.   @Override
  179.   protected boolean isRouteDisplayed()
  180.   {
  181.     // TODO Auto-generated method stub
  182.     return false;
  183.   }
  184. }