Android之googleMap(其一)
2012-01-09 23:42
387 查看
这一节我们主要讲述google map在android手机中的使用,我们一般是用google map API+Location API,就是地图API+地位API,如果加上一些服务端以及网络方面的知识,我们可以制作出很有创意的应用,而这些正是现在流行的LBS,主要涉及技术有地图API+地位API+javaee 服务端+手机通信+XMPP协议(主要是及时通信)。可以发挥自己的想象作出好的有创意的应用,比如说,我们在车上看见一美女,而又不好意思打招呼,但她手机中也有该LBS应用,那么我们可以查询当前多少米范围内有多少人使用这个应用,然后进一步锁定到车上的她,然后,你懂的。又或者我们出差在某地,打开应用可以从地图中标识找到我们喜欢吃得美食。这一切都归根于基本的地图服务,只要我们适当整合资源。
好了,不说废话了,开始我们的google map编程吧。
1:必须下载google Map扩展库,下载方式是通过AVD,跟你下载最新SDK一样,具体就不说了。
2:申请Android Map API Key:
在命令行下进入其路径地址,进入到:C:\Users\用户名\.android下:然后 输入
keytool -list -v -keystore debug.keystore ,这时它一般会提示你输入密码,默认的密码是android, 你输入android,[b]如果完整输入android后,没有显示也没有关系,按回车即可[/b],这样就把三种指纹证书全部列出来了,包括MD5、SHA1、SHA256。(密钥口令是android)
,后显示证书指纹如下:
View Code
当然,我们还必须使用地位API,根据手机当前位置获得经纬度,然后在地图中显示。
注意,我们可以把我们手机默认语言设置为中文,这样显示路线的时候才会是中文
运行程序如图:
![](http://pic002.cnblogs.com/images/2012/100754/2012010923414822.jpg)
google map api包中最重要的几个类。
1、MapActivity:这个类是用于显示Map的Activity类,它需要连接底层网络。
2、MapView:是用于显示地图的View组件,它必须和MapActivity配合使用。
3、MapController:用于控制地图的移动。
4、Overlay:这是一个可显示于地图之上的可绘制的对象。
5、GeoPoint:一个包含经纬度位置的对象。
Android Location API 关于定位功能的比较重要的类:
1、LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。另外,临近警报功能。
2、LocationProvider:该类是定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。
3、LocationListener:提供定位信息发生改变时的回调功能。必须事先在定位管理器中注册监听器对象。
4、Criteria:该类使得应用能够通过在LocationProvider中设置的属性来选择合适的定位提供者。
那么怎么获得本机的经纬度呢?我们可以使用[b]GPS传感器,
[/b]
好了,不说废话了,开始我们的google map编程吧。
1:必须下载google Map扩展库,下载方式是通过AVD,跟你下载最新SDK一样,具体就不说了。
2:申请Android Map API Key:
在命令行下进入其路径地址,进入到:C:\Users\用户名\.android下:然后 输入
keytool -list -v -keystore debug.keystore ,这时它一般会提示你输入密码,默认的密码是android, 你输入android,[b]如果完整输入android后,没有显示也没有关系,按回车即可[/b],这样就把三种指纹证书全部列出来了,包括MD5、SHA1、SHA256。(密钥口令是android)
,后显示证书指纹如下:
View Code
package com.dongzi; import android.content.Context; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.Window; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; /** * location api和map api结合起来,通过location api定位,然后在map api中显示地图: * @author Lenovo * */ public class GooglemapDemoActivity extends MapActivity { private static final String Tag=GooglemapDemoActivity.class.getName(); private MapView mapView=null; private MapController mapController=null; int latitudeE6=39*1000000; int longitudeE6=116*1000000; int zoomLevel=12; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); mapView = (MapView) findViewById(R.id.mapView); //设置街道模式,可放大 mapView.setStreetView(true); //mapView.setTraffic(true);mapView.setSatellite(false); mapView.setBuiltInZoomControls(true); //获得map控制器 mapController=mapView.getController(); mapController.setZoom(zoomLevel); //默认定位到北京经纬度 GeoPoint gpoint=new GeoPoint(latitudeE6, longitudeE6); //默认显示北京经纬度 mapController.animateTo(gpoint); } @Override protected boolean isRouteDisplayed() { return false; } @Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); menu.add(0, 0, 0, "街道"); menu.add(0, 1, 0, "交通"); menu.add(0, 2, 0, "卫星"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ super.onOptionsItemSelected(item); switch(item.getItemId()){ case 0: //显示街道图 mapView.setStreetView(true); mapView.setTraffic(false); mapView.setSatellite(false); break; case 1: //显示交通图 mapView.setStreetView(false); mapView.setTraffic(true); mapView.setSatellite(false); break; case 2: //显示卫星图 mapView.setStreetView(false); mapView.setTraffic(false); mapView.setSatellite(true); break; default:break; } return true; } //根据地位API获得当前经纬度并返回GeoPoint对象,提供与地图API 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)); } }
当然,我们还必须使用地位API,根据手机当前位置获得经纬度,然后在地图中显示。
注意,我们可以把我们手机默认语言设置为中文,这样显示路线的时候才会是中文
运行程序如图:
![](http://pic002.cnblogs.com/images/2012/100754/2012010923414822.jpg)
google map api包中最重要的几个类。
1、MapActivity:这个类是用于显示Map的Activity类,它需要连接底层网络。
2、MapView:是用于显示地图的View组件,它必须和MapActivity配合使用。
3、MapController:用于控制地图的移动。
4、Overlay:这是一个可显示于地图之上的可绘制的对象。
5、GeoPoint:一个包含经纬度位置的对象。
Android Location API 关于定位功能的比较重要的类:
1、LocationManager:本类提供访问定位服务的功能,也提供获取最佳定位提供者的功能。另外,临近警报功能。
2、LocationProvider:该类是定位提供者的抽象类。定位提供者具备周期性报告设备地理位置的功能。
3、LocationListener:提供定位信息发生改变时的回调功能。必须事先在定位管理器中注册监听器对象。
4、Criteria:该类使得应用能够通过在LocationProvider中设置的属性来选择合适的定位提供者。
那么怎么获得本机的经纬度呢?我们可以使用[b]GPS传感器,
[/b]
相关文章推荐
- Android之googleMap(其一)
- Android之googleMap(其一)
- android解析xml文件的方式(其一)
- android中使用GoogleMap的地理位置服务
- android googlemap的location报空指针解决案例
- Android开发视频第三季之八:GoogleMap(三)
- Android异步下载网络图片(其一)
- Android服务之Service(其一)
- Android异步下载网络图片(其一)
- android 开发googlemap应用中获得开发许可
- 【Android·GoogleMap】Google Maps API V2 的显示
- 谈Android中GoogleMap的使用(一)
- Android--GoogleMap的使用
- GoogleMap----android篇(2)
- Android服务之Service(其一)
- Android服务之Service(其一)
- 谈Android中GoogleMap的使用(三)
- ANDROID_MARS学习笔记_S03_009_GOOGLEMAP3
- 配置GoogleMap后android.view.InflateException:Binary XML file line # 10:Error inflating class