google map my demo
16lz
2021-01-23
<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
更多相关文章
- javascript获取Android设备版本信息(备忘)
- android获取手机已经安装的app信息
- Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
- 获取android手机基本信息
- Android 获取包名,版本信息
- android 量产软件改动信息(持续更新)
- Android获取keystore文件的信息
- 第九章 Android 系统信息与安全机制