<uses-library android:name="com.google.android.maps" /></application><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-sdk android:minSdkVersion="3" /></manifest> 

mapview.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><com.google.android.maps.MapView android:id="@+id/mapview_mv"android:layout_width="fill_parent"android:layout_height="fill_parent"android:enabled="true"android:clickable="true"android:apiKey="0HYDh8uGZ3WWc58LxmauEVsNWqAGP_HSGFRzixQ"/><LinearLayout android:id="@+id/mapview_llayout_zoom"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"/><RelativeLayout android:id="@+id/mapview_rlayout_search"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:background="@color/darkgray"android:visibility="invisible"android:paddingTop="8dip"android:paddingBottom="4dip"android:paddingLeft="8dip"android:paddingRight="8dip"><AutoCompleteTextView android:id="@+id/mapview_autotxtview_search"android:layout_width="245dip"android:layout_height="wrap_content"android:text="@string/edt_search_default"android:textColor="@color/darkgray"android:layout_marginRight="6dip"/><ImageButton android:id="@+id/mapview_imgbtn_search"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@android:drawable/ic_search_category_default"android:layout_toRightOf="@id/mapview_autotxtview_search"android:layout_alignBottom="@id/mapview_autotxtview_search"/></RelativeLayout></RelativeLayout>

public class ActivityMap extends MapActivity {private MapView mMapView;private GeoPoint gp;private LocationManager mLocMgr;public static Location mLoc;private String strLocInfo;private final LocationListener mLocListener = new LocationListener() {public void onLocationChanged(Location location) {refreshMapView(location);}public void onProviderDisabled(String provider) {}public void onProviderEnabled(String provider) {}public void onStatusChanged(String provider, int status, Bundle extras) {}};protected void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.mapview);mMapView = (MapView) findViewById(R.id.mapview_mv);mLocMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);updateLocation(mLocMgr);refreshMapView(mLoc);//mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, mLocListener);mLocMgr.requestLocationUpdates(strLocInfo, 2000, 10, mLocListener);// zoom widgetLinearLayout zoomLayout = (LinearLayout) findViewById(R.id.mapview_llayout_zoom);        View zoomView = mMapView.getZoomControls();        zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(        LayoutParams.WRAP_CONTENT,         LayoutParams.WRAP_CONTENT));//        mMapView.displayZoomControls(true);//        mMapView.setBuiltInZoomControls(true);//        mMapView.displayZoomControls(false);}private void refreshMapView(Location location) {updateGeoPoint(location);MapController mMapController = mMapView.getController();mMapController.animateTo(gp);mMapController.setZoom(mMapView.getZoomLevel());try {Log.e("************", getAddress(gp));} catch (IOException e) {e.printStackTrace();}}private void updateLocation(LocationManager lm) {Criteria mCriteria = new Criteria();mCriteria.setAccuracy(Criteria.ACCURACY_FINE); // 经纬度是否精确提供mCriteria.setAltitudeRequired(false); // 是否提供高度信息mCriteria.setBearingRequired(false); // 是否提供航向信息mCriteria.setCostAllowed(true); // 费用mCriteria.setPowerRequirement(Criteria.POWER_LOW);strLocInfo = lm.getBestProvider(mCriteria, true);mLoc = lm.getLastKnownLocation(strLocInfo);if (mLoc == null) {mLoc = new Location(strLocInfo);mLoc.setLatitude(31.183333);mLoc.setLongitude(121.483333);}}private void updateGeoPoint(Location location) {double dLatitude = location.getLatitude() * 1E6;double dLongitude = location.getLongitude() * 1E6;gp = new GeoPoint( (int) (dLatitude), (int) (dLongitude) );}private String getAddress(GeoPoint gp) throws IOException {double dLatitude = gp.getLatitudeE6() / 1E6;double dLongitude = gp.getLongitudeE6() / 1E6;//自经纬度取得地址StringBuilder sb = new StringBuilder();Geocoder gc = new Geocoder(ActivityMap.this, Locale.getDefault());List<Address> lstAddr = gc.getFromLocation(dLatitude, dLongitude, 1);if (lstAddr.size() > 0) {Address addr = lstAddr.get(0);for (int i = 0; i < addr.getMaxAddressLineIndex(); i++) {sb.append(addr.getAddressLine(i)).append("\n");}sb.append(addr.getLocality()).append("\n"); //所在地sb.append(addr.getPostalCode()).append("\n"); //邮编sb.append(addr.getCountryName());}return sb.toString();}public boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.optionsmenu, menu);return super.onCreateOptionsMenu(menu);}public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.optionsmenu_search:Intent intent = new Intent();intent.setClass(ActivityMap.this, ActivitySearch.class);startActivity(intent);break;case R.id.optionsmenu_directions:break;case R.id.optionsmenu_mapmode:break;case R.id.optionsmenu_mapmode_map:mMapView.setStreetView(true);mMapView.setSatellite(false);mMapView.setTraffic(false);break;case R.id.optionsmenu_mapmode_satellite:mMapView.setStreetView(false);mMapView.setSatellite(true);mMapView.setTraffic(false);break;case R.id.optionsmenu_mapmode_traffic:mMapView.setStreetView(false);mMapView.setSatellite(false);mMapView.setTraffic(true);break;case R.id.optionsmenu_myloc:MapOverlay mMapOverlay = new MapOverlay();        List<Overlay> listOfOverlay = mMapView.getOverlays();        listOfOverlay.clear();        listOfOverlay.add(mMapOverlay);        mMapView.invalidate();        updateLocation(mLocMgr);        refreshMapView(mLoc);break;}return super.onOptionsItemSelected(item);}protected boolean isRouteDisplayed() {return false;}private class MapOverlay extends com.google.android.maps.Overlay {public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {super.draw(canvas, mapView, shadow);// translate the GeoPoint to screen pixelsPoint screenPts = new Point();mapView.getProjection().toPixels(gp, screenPts);// add the markerBitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_android);canvas.drawBitmap(bmp, screenPts.x, screenPts.y, null);return true;}}}

public class ActivitySearch extends MapActivity {private MapView mMapView;public static int screen_width, screen_height;protected void onCreate(Bundle icicle) {super.onCreate(icicle);setContentView(R.layout.mapview);screen_width = getWindowManager().getDefaultDisplay().getWidth();screen_height = getWindowManager().getDefaultDisplay().getHeight();mMapView = (MapView) findViewById(R.id.mapview_mv);        MapOverlay mMapOverlay = new MapOverlay();        List<Overlay> listOfOverlay = mMapView.getOverlays();        listOfOverlay.clear();        listOfOverlay.add(mMapOverlay);        mMapView.invalidate();RelativeLayout rLayout = (RelativeLayout) findViewById(R.id.mapview_rlayout_search);rLayout.setVisibility(View.VISIBLE);ImageButton btn_search = (ImageButton) findViewById(R.id.mapview_imgbtn_search);btn_search.setOnClickListener(new Button.OnClickListener() {public void onClick(View v) {}});mMapView.setEnabled(false);}protected boolean isRouteDisplayed() {return false;}private class MapOverlay extends com.google.android.maps.Overlay {public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {super.draw(canvas, mapView, shadow);Paint innerPaint = new Paint();Paint borderPaint = new Paint();innerPaint.setARGB(75, 80, 80, 80); // darkgrayborderPaint.setARGB(255, 255, 255, 255); // whiteborderPaint.setAntiAlias(true); // 抗锯齿borderPaint.setStyle(Style.STROKE); //描边,和Style.Fill相对borderPaint.setStrokeWidth(2);    RectF drawRect = new RectF();    drawRect.set(0,0, screen_width, screen_height);    canvas.drawRoundRect(drawRect, 5, 5, innerPaint);    canvas.drawRoundRect(drawRect, 5, 5, borderPaint);return true;}}}

22

更多相关文章

  1. javascript获取Android设备版本信息(备忘)
  2. android获取手机已经安装的app信息
  3. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  4. 获取android手机基本信息
  5. Android 获取包名,版本信息
  6. android 量产软件改动信息(持续更新)
  7. Android获取keystore文件的信息
  8. 第九章 Android 系统信息与安全机制

随机推荐

  1. 【Android(安卓)Studio快捷键】之代码提
  2. Android adb命令
  3. Android中的Cursor
  4. android reboot 功能的添加
  5. Android(安卓)Fresco加载图片列表出现OOM
  6. Android(安卓)Manager之 SmsManager(短信
  7. Android属性动画-Property Animation(二)
  8. 技术转载:Android对话框大合集
  9. 8、从头学Android之EditText控件
  10. Android获取当前WIFI所有信息