android用户界面-组件Widget-地图视图MapView

简介:

一、在Google地图上显示本地的位置。

1、首先注意在AndroidManifest.xml文件中,增加权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

在application中activity外,增加:uses-library

<uses-library android:name="com.google.android.maps" />

 

 

2、在类中,将extends Activity改为extends MapActivity

3、设置可放大缩小地图的控件。

在xml文件中,添加以下内容:

<LinearLayout android:orientation="vertical" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:id="@+id/zoom" android:layout_alignParentBottom="true" 
android:layout_centerHorizontal="true" > 
</LinearLayout>

在类中,加入:

LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
View zoomView = mapView.getZoomControls(); 
zoomLayout.addView(zoomView, 
new LinearLayout.LayoutParams( 
LayoutParams.WRAP_CONTENT, 
LayoutParams.WRAP_CONTENT)); 
mapView.displayZoomControls(true);

mapView.getController().setZoom(14);//设置缩放级别 
p = this.getCurrentGeoPoint(); 
mapView.getController().animateTo(p);// 通过动画方式移动到指定坐标s

4、通过以下方法得到当前位置的经纬度

private GeoPoint getCurrentGeoPoint() { 
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
Location location = locationManager 
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
return new GeoPoint((int) (location.getLatitude() * 1e6), 
(int) (location.getLongitude() * 1e6)); 
}

5、通过以下方式显示当前位置在地图上显示:

class MapOverlay extends com.google.android.maps.Overlay 

@Override 
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(p, screenPts); 
//—add the marker— 
Bitmap bmp = BitmapFactory.decodeResource( 
getResources(), R.drawable.pushpin); 
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); 
return true; 

}

在oncreate方法中,加入:

MapOverlay mapOverlay = new MapOverlay(); 
List<Overlay> listOfOverlays = mapView.getOverlays(); 
listOfOverlays.clear(); 
listOfOverlays.add(mapOverlay);

这样就能在屏幕中显示你当前位置的地图显示了;

如下图:

 

 

源代码见:http://henzil.googlecode.com/svn/trunk/android.googleMap01/

二、输入地址,在地图上显示相应的位置。此方法是通过查询地址名称,返回一个list结果。在地图上显示:

此方法与上述方法基本一致,不同之处在于:是用getFromLocationName方法,来查询目的地的经纬度。

如下代码:

// 通过系统默认区域设置进行地图定位 
Geocoder gc = new Geocoder(this); 
mapView.setStreetView(true); 
try { 
// 通过地址名称描述返回一个查询结果的数组(后面参数为返回最大结果数) 
addresses = gc.getFromLocationName(address, 5);

// 如果未查询到任何结果 
if (addresses != null) { 
geoPoint = new GeoPoint( 
// 返回纬度,经度 
(int) (addresses.get(0).getLatitude() * 1E6), 
(int) (addresses.get(0).getLongitude() * 1E6));

setTitle(addresses.get(0).getFeatureName()); 
MyOverlay myOverlay = new MyOverlay(); 
mapView.getOverlays().add(myOverlay); 
mapView.getController().setZoom(16); 
mapView.getController().animateTo(geoPoint); 

} catch (Exception e) { 
e.printStackTrace(); 
}

如下图所示:

 

 

 


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1080684

 

相关文章
|
2月前
|
设计模式 Android开发
[Android 四大组件] --- BroadcastReceiver
[Android 四大组件] --- BroadcastReceiver
33 0
|
3月前
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
39 0
|
4月前
|
XML Java Android开发
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
40 1
|
4月前
|
数据库 Android开发
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
49 0
|
4月前
|
XML 前端开发 Java
Android App开发图像加工中卡片视图CardView和给图像添加装饰的讲解以及实战(附源码 简单易懂)
Android App开发图像加工中卡片视图CardView和给图像添加装饰的讲解以及实战(附源码 简单易懂)
50 0
|
4月前
|
XML Java Android开发
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
Android Studio App开发之翻页视图ViewPager的讲解及实战(附源码 包括翻页视图和翻页标签栏)
90 0
|
4月前
|
XML Java Android开发
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
72 0
|
4月前
|
Android开发
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
Android Studio入门之图像显示解析及实战(附源码 超详细必看)(包括图像视图、图像按钮、同时展示文本与图像)
66 1
|
4月前
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
80 0
|
2月前
|
数据可视化 Android开发
[Android 四大组件] --- Service
[Android 四大组件] --- Service
24 0