`
wayfarer
  • 浏览: 298294 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

google map my demo

阅读更多
<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 widget
		LinearLayout 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 pixels
			Point screenPts = new Point();
			mapView.getProjection().toPixels(gp, screenPts);
			
			// add the marker
			Bitmap 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); // darkgray
			borderPaint.setARGB(255, 255, 255, 255); // white
			borderPaint.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

分享到:
评论

相关推荐

    google map v2 Demo

    这个"google map v2 Demo"是展示如何使用API V2创建一个简单的地图应用实例。在这个Demo中,重点是展示如何显示基本的地图视图。 首先,要使用Google Maps API V2,开发者需要在Google Developers Console上注册...

    GoogleMap谷歌地图demo

    首先,让我们从标题"GoogleMap谷歌地图demo"开始。这个标题暗示我们将会讨论一个基于GoogleMap API开发的示例应用。一个demo通常包含基本和常见的功能,旨在展示API的能力,帮助开发者了解如何开始自己的项目。在这...

    googlemap地图demo+doc

    【标题】"googlemap地图demo+doc" 涉及的知识点主要集中在使用Google Map API在Android平台上进行地图开发,包括展示地图、定位、添加标记、路径规划等基本功能的实现。Google Map API是Google提供的一个强大的服务...

    demo.zip_DEMO_Google api_MapView_google map api demo_google map

    GOOGLE MAP api 7个案例。 CurrentAddress 得到当前位置 gMap 地形 路线 GoogleMapDemo 当前位置 MAP 绘制路线 MapView 放大缩小 WeatherMap 在MAP上添加图片 WorldCities 城市经纬度的切换 以及 动画切换效果

    googleMap离线demo.rar_googleMap离线demo_瓦片 googlemap_离线谷歌地图_谷歌地球_谷歌离

    适用于谷歌地球离线瓦片下载,支持多线程应用下载,可下载1-19层谷歌地图

    google地图API实现的一个简单demo

    在这个"google地图API实现的一个简单demo"中,我们将探讨如何使用谷歌地图API创建一个基本的地图展示,并实现一些基础功能。 首先,你需要在Google Developers Console(谷歌开发者控制台)上注册一个项目,获取API...

    ios应用源码之有个朋友要googlemap的demo,做了个,需要的可以看看goog

    这篇内容将围绕iOS应用中的Google Maps SDK,介绍如何创建一个基础的Google Map Demo,以及在这个过程中涉及的关键知识点。 首先,我们需要在Xcode项目中引入Google Maps SDK。这通常通过CocoaPods来完成,这是一个...

    google map demo

    "google map demo"是一个示例项目,旨在帮助开发者理解如何在他们的应用程序中有效地使用Google Maps API。在这个过程中,开发者可能遇到各种挑战,如设置API密钥、处理权限问题、加载地图以及实现交互功能等。以下...

    真实好用的javaweb上使用的googlemap的demo

    这个"真实好用的javaweb上使用的googlemap的demo"提供了实现上述功能的示例代码,可以帮助开发者快速理解和应用Google Maps API于JavaWeb项目中。通过学习和实践这个Demo,你可以创建具有地图功能的动态Web应用,...

    googlemap-demo.rar_DEMO

    【标题】"googlemap-demo.rar_DEMO"是一个包含Google地图应用示例的压缩包,专为初学者设计,旨在帮助他们快速理解如何在JSP(Java Server Pages)中集成JavaScript来实现Google Maps API的功能。 【描述】这个...

    MapKitDemo 百度

    《深入解析:使用MapKitDemo调用与应用百度地图》 在移动开发领域,地图服务是不可或缺的一部分,尤其是在iOS平台上,开发者们常常需要集成地图功能来实现导航、定位、路线规划等需求。本文将深入探讨如何利用Map...

    google map v3 demo 数据库动态案例 php的

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); google.maps.event.addListener(map, 'click', function(event) { addMarker(event.latLng); }); } function addMarker...

    GISMap地图demo+C#+ Winform

    GISMap地图demo 两个版本,一个旧版本GISMap和GISMapNew,旧版本中需要在代码内部自己配置区域编号,搜索地址,类型等。 新版直接可以在界面的combox中直接选择区域,类型,制定关键词等。

    Google map 轨迹回放

    利用google map实现轨迹回放利用google map实现轨迹回放

    IOS应用源码之基于GoogleMap的Demo .zip

    这个"IOS应用源码之基于GoogleMap的Demo .zip"文件应该包含了一个实际运行的示例项目,帮助开发者了解如何在iOS应用中集成和使用Google Maps服务。 1. **Google Maps SDK for iOS**:这是Google提供的一个iOS平台上...

    google_map_demo

    在这个名为 "google_map_demo" 的项目中,我们将深入探讨如何使用 JavaScript 集成 Google Map API,实现基本的移动标记功能。 1. **API 导入**: 在 HTML 文件中,我们首先需要通过 `&lt;script&gt;` 标签引入 Google ...

    谷歌地图Google Map API V3中文开发文档

    谷歌地图 Google Map API V3 中文开发文档 谷歌地图 Google Map API V3 中文开发文档是 Google 公司提供的一种基于 Web 的地图应用程序接口,允许开发者在自己的网站或应用程序中嵌入谷歌地图,以提供地图检索、...

    谷歌地图GoogleMap

    Google Map API(Application Programming Interface)则是谷歌为开发者提供的接口,允许他们将谷歌地图的功能集成到自己的网站或应用中,提供丰富的地图定制和交互能力。 一、Google Map API基础 Google Map API...

    baidu map API demo

    baidu map API demo,显示运动轨迹,多点的轨迹

    IOS map 定位 Demo

    这个“iOS Map 定位 Demo”提供了实现这一功能的实例代码,帮助开发者理解如何在自己的应用中集成苹果的地图服务并获取用户的位置信息。接下来,我们将深入探讨相关知识点。 首先,我们需要导入必要的框架。`...

Global site tag (gtag.js) - Google Analytics