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

 

相关文章
|
13天前
|
供应链 物联网 区块链
未来触手可及:探索新兴技术的趋势与应用安卓开发中的自定义视图:从基础到进阶
【8月更文挑战第30天】随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实正在重塑我们的世界。本文将深入探讨这些技术的发展趋势和应用场景,带你领略未来的可能性。
|
14天前
|
测试技术 Android开发 Python
探索软件测试的艺术:从基础到高级安卓应用开发中的自定义视图
【8月更文挑战第29天】在软件开发的世界中,测试是不可或缺的一环。它如同艺术一般,需要精细的技巧和深厚的知识。本文旨在通过浅显易懂的语言,引领读者从软件测试的基础出发,逐步深入到更复杂的测试策略和工具的使用,最终达到能够独立进行高效测试的水平。我们将一起探索如何通过不同的测试方法来确保软件的质量和性能,就像艺术家通过不同的色彩和笔触来完成一幅画作一样。
|
1天前
|
缓存 搜索推荐 Android开发
安卓应用开发中的自定义View组件实践
【9月更文挑战第10天】在安卓开发领域,自定义View是提升用户体验和实现界面个性化的重要手段。本文将通过一个实际案例,展示如何在安卓项目中创建和使用自定义View组件,包括设计思路、实现步骤以及可能遇到的问题和解决方案。文章不仅提供了代码示例,还深入探讨了自定义View的性能优化技巧,旨在帮助开发者更好地掌握这一技能。
|
14天前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!
|
13天前
|
XML 搜索推荐 Android开发
安卓开发中的自定义View组件实践
【8月更文挑战第30天】探索Android世界,自定义View是提升应用界面的关键。本文以简洁的语言带你了解如何创建自定义View,从基础到高级技巧,一步步打造个性化的UI组件。
|
2月前
|
搜索推荐 Android开发 UED
探索安卓开发中的自定义视图:打造个性化用户界面
【7月更文挑战第31天】在安卓应用的海洋中,一个独特且吸引人的用户界面是捕获用户眼球的关键。本文将带你深入理解如何在Android开发中创建自定义视图,从而设计出与众不同的用户界面。我们将一起探索如何从零开始构建一个自定义视图组件,并实现动态交互效果。通过实际的代码示例和详细的步骤解析,你将学会如何提升你的应用界面,让它在众多应用中脱颖而出。
91 31
|
5天前
|
前端开发 搜索推荐 Android开发
探索安卓开发中的自定义视图##
【9月更文挑战第6天】 在安卓应用开发的世界里,自定义视图如同绘画艺术中的色彩,它们为界面设计增添了无限可能。通过掌握自定义视图的绘制技巧,开发者能够创造出既符合品牌形象又提升用户体验的独特界面元素。本文将深入浅出地介绍如何从零开始构建一个自定义视图,包括基础框架搭建、关键绘图方法实现、事件处理机制以及性能优化策略。准备好让你的安卓应用与众不同了吗?让我们开始吧! ##
|
17天前
|
前端开发 Android开发 开发者
安卓开发中的自定义视图:构建你的第一个控件
【8月更文挑战第26天】在安卓开发的浩瀚海洋中,自定义视图是一块充满魔力的乐土。它不仅是开发者展示创造力的舞台,更是实现独特用户体验的关键。本文将带你步入自定义视图的世界,从基础概念到实战应用,一步步教你如何打造自己的第一个控件。无论你是初学者还是有经验的开发者,这篇文章都将为你的开发之旅增添新的风景。
|
22天前
|
开发工具 Android开发
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
Android项目架构设计问题之组件A通知组件B某个事件的发生如何解决
27 0
|
2月前
|
机器学习/深度学习 人工智能 算法
探索AI在医疗影像分析中的应用探索安卓开发中的自定义View组件
【7月更文挑战第31天】随着人工智能技术的飞速发展,其在医疗健康领域的应用日益广泛。本文将聚焦于AI技术在医疗影像分析中的运用,探讨其如何通过深度学习模型提高诊断的准确性和效率。我们将介绍一些关键的深度学习算法,并通过实际代码示例展示这些算法是如何应用于医学影像的处理和分析中。文章旨在为读者提供对AI在医疗领域应用的深刻理解和实用知识。
29 0