Android Google Map API使用的八个步骤Word格式.docx

上传人:b****1 文档编号:5855520 上传时间:2023-05-05 格式:DOCX 页数:12 大小:506.97KB
下载 相关 举报
Android Google Map API使用的八个步骤Word格式.docx_第1页
第1页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第2页
第2页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第3页
第3页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第4页
第4页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第5页
第5页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第6页
第6页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第7页
第7页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第8页
第8页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第9页
第9页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第10页
第10页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第11页
第11页 / 共12页
Android Google Map API使用的八个步骤Word格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android Google Map API使用的八个步骤Word格式.docx

《Android Google Map API使用的八个步骤Word格式.docx》由会员分享,可在线阅读,更多相关《Android Google Map API使用的八个步骤Word格式.docx(12页珍藏版)》请在冰点文库上搜索。

Android Google Map API使用的八个步骤Word格式.docx

 步骤2注册GoogleMapAPIkey

  由于在使用googlemap的时候,需要使用googlemapapi的key,因此需要先注册一个开发者key,可以到如下地址进行注册:

,其中需要我们先产生开发期间的md5密纹才能完成注册,因此我们先学习如何生成一个MD5密纹。

  我们需要使用keytool工具,不使用传统的命令行方式下那枯燥的证书签名生成办法,而是直接在eclipse下通过插件进行完成,详细见步骤3

  步骤3安装keytool插件

  在eclipse的Help菜单中,如下图,选择安装新软件:

  在安装地址中输入如下地址:

,如下图

  接下来会加载相关的安装程序,并显示用户协议,选择接受所有用户协议后进行安装,安装成功后重新启动eclipse即可生效。

  步骤4产生开发期间的MD5密钥

  在重新启动eclipse后,会发现工具栏多了如下图的keytool菜单

  现在,我们打开debug.keystore,注意其位置回因操作系统不同而有不同

  WindowsVista:

C:

\Users\\.android\debug.keystore

  WindowsXP:

\DocumentsandSettings\\.android\debug.keystore

  OSX和Linux:

~/.android/debug.keystore

  点keytool菜单中,选择openkeystore,根据提示,选择当前系统所在的debug.keystore位置并打开,如下图,

  其中,输入密码默认为android即可,并点Load加载。

之后会在eclipse中出现新的keytool的视图,如下图所示:

  双击打开androiddebugkey,复制其md5密纹,然后访问页面

  ,接受其协议,将md5密纹复制进去,再点GenerateAPIKey,即产生googlemap的apikey,记得保存好这个KEY,在接下来的步骤中要使用

步骤5增加MapView控件

  接下来,我们可以往布局文件中增加MapView控件。

我们在main.xml中添加如下代码:

<

?

xmlversion="

1.0"

encoding="

utf-8"

>

LinearLayoutxmlns:

android="

android:

layout_width="

fill_parent"

layout_height="

orientation="

vertical"

FrameLayout

com.google.android.maps.MapView

id="

@+id/mapView"

clickable="

true"

apiKey="

你的GOOGLEMAPAPIKEY"

/>

/FrameLayout>

/LinearLayout>

  在这个控件中,请注意要在android:

apiKey的位置填入刚申请的googlemapapikey。

  步骤6设置相关的权限

  由于我们的应用需要调用GoogleMap的数据,以及通过手机的GPS获得相关的其他地理位置数据,因此我们必须在Android的Manifest文件中进行权限的设置。

  我们打开AndroidManifest.xml文件,然后增加如下代码所示的权限设置,注意添加在标签后,但要在标签前。

uses-featureandroid:

name="

android.hardware.location.gps"

uses-permissionandroid:

android.permission.ACCESS_FINE_LOCATION"

android.permission.INTERNET"

  在这里,我们分别调用了gps位置服务权限,使用互联网的权限以及使用最佳位置查找的权限(FINE_LOCATION)。

在本文中,其实没用到FINE_LOCATION,但只是告诉开发者可以调整使用不同的地理位置提供者(providers)以提供准确的位置服务,如果要有比较精确的地理位置服务,那么可以设置android.permisson.ACCESS_FINE_LOCATION服务。

要注意的是在开发中,不要过多引用一些不需要使用的权限设置,否则会给用户带来担忧安全等问题。

要是只想调用一般的位置服务,可以使用普通的android.permission.ACCESS_COARSE_LOCATION权限。

  为了在应用中使用GoogleMap,需要在Manifest文件中包含相关的类库文件,所以加入如下代码:

uses-libraryandroid:

required="

com.google.android.maps"

/>

  为了视觉的美观,我们把标题栏也去掉,以便留给地图更大的空间,所以设置为

  android:

theme="

@android:

style/Theme.NoTitleBar"

  下面是完整的Manifest文件代码:

manifestxmlns:

package="

com.shawnbe.mallfinder"

versionCode="

1"

versionName="

uses-sdkandroid:

minSdkVersion="

7"

application

icon="

@drawable/ic_launcher"

label="

@string/app_name"

activity

.MallFinderActivity"

intent-filter>

actionandroid:

android.intent.action.MAIN"

categoryandroid:

android.intent.category.LAUNCHER"

/intent-filter>

/activity>

/application>

/manifest>

  步骤7设置MapView

  下面对主activity程序(MallFinderActivity.java)进行修改,首先让其继承MapActivity类,如下:

  publicclassMallFinderActivityextendsMapActivity{

  由于继承了MapActivity类,因此必须实现isRouteDisplayed方法,这个方法是用来做路线导航用的,这里我们不需要,因此只需要简单返回false即可:

  @Override

  protectedbooleanisRouteDisplayed(){

  //TODOAuto-generatedmethodstub

  returnfalse;

  }

  接下来我们就可以声明MapController控件,并对其进行相关属性的设置了,首先是声明控件

  privateMapControllermapController;

  privateMapViewmapView;

  并在oncreate方法中进行属性设置如下:

mapView=(MapView)findViewById(R.id.mapView);

mapView.setBuiltInZoomControls(true);

mapView.setSatellite(false);

mapView.setStreetView(true);

mapController=mapView.getController();

mapController.setZoom(13);

  在上面的代码中,设置了地图显示的方式为街道模式(通过设置mapview的setStreetView属性值为true),并且通过mapView.setBuiltInZoomControls(true);

使用了系统内置的放大缩小功能,并设置了地图的放大缩小倍数为13。

  这个时候我们就可以选择运行应用,看下是否符合我们的初步预期效果,运行后效果如下图:

步骤8获得当前所在位置

  在LBS应用中,十分重要的工作是要获得当前设备所在的位置,这个可以使用locationManager类实现,在获得当前位置的时候是需要花费一些时间的。

我们继续声明两个参数变量如下:

  privateLocationManagerlocationManager;

  privateGeoPointcurrentLocation;

  分别声明了LocationManager类的实例和GeoPoint类的实例(用于下文中的经纬度的计算)。

  再增加如下几个方法:

publicvoidgetLastLocation(){

Stringprovider=getBestProvider();

currentLocation=locationManager.getLastKnownLocation(provider);

if(currentLocation!

=null){

setCurrentLocation(currentLocation);

}

else

{

Toast.makeText(this,"

Locationnotyetacquired"

Toast.LENGTH_LONG).show();

publicvoidanimateToCurrentLocation(){

if(currentPoint!

=null){

mapController.animateTo(currentPoint);

publicStringgetBestProvider(){

locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);

Criteriacriteria=newCriteria();

criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);

criteria.setAccuracy(Criteria.NO_REQUIREMENT);

StringbestProvider=locationManager.getBestProvider(criteria,true);

returnbestProvider;

publicvoidsetCurrentLocation(Locationlocation){

intcurrLatitude=(int)(location.getLatitude()*1E6);

intcurrLongitude=(int)(location.getLongitude()*1E6);

currentLocation=newGeoPoint(currLatitude,currLongitude);

currentLocation=newLocation("

"

);

currentLocation.setLatitude(currentPoint.getLatitudeE6()/1e6);

currentLocation.setLongitude(currentPoint.getLongitudeE6()/1e6);

}

  并且在oncreate方法中,添加对以上方法的调用代码如下:

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

getLastLocation();

animateToCurrentLocation();

  首先,在getLastLocation这个方法中,创建了locationManager类的实例并且根据设置的条件返回一个合适的地理位置提供方法。

在这里,我们并没有指定对地理位置提供者的查询条件,在实际应用中,开发者可以通过设置criteria.setAccuracy()和criteria.setPowerRequirement()方法进行查找。

如果要使用最精确的provider的话,可以设置使用ACCURACY_FINE方法进行搜索,如下代码所示:

  criteria.setAccuracy(Criteria.ACCURACY_FINE);

  在本文中之所以不选择使用最准确的位置provider主要是因为是没在室外进行测试,都是在室内调试程序,建议开发完后换成GPS模式provider到室外进行调试那样将看到很好的效果。

  接下来代码中使用currentLocation=locationManager.getLastKnownLocation(provider);

一句,获得最新的位置信息,并且在setCurrentLocation方法中,对通过prodiver获得的地理位置信息Location对象进行经纬度的转换为GeoPoint对象。

然后调用animateToCurrentLocation方法,将地图的中心点定位到我们当前的位置上去。

  此外,由于我们的位置是会发生变化的,所以需要使用location监听器去检测我们的位置变化,这时需要实现locationListener接口,如下所示:

  publicclassMallFinderActivityextendsMapActivityimplementsLocationListener{

  同时我们需要实现LocationListener类的以下几个方法:

@Override

publicvoidonLocationChanged(Locationarg0){

//TODOAuto-generatedmethodstub

publicvoidonProviderDisabled(Stringarg0){

publicvoidonProviderEnabled(Stringarg0){

publicvoidonStatusChanged(Stringarg0,intarg1,Bundlearg2){

  其中这里我们关心的是需要实现onLocationChanged方法,这里我们调用之前编写好的setlocation方法,获得当前的最新位置,如下:

publicvoidonLocationChanged(LocationnewLocation){

setCurrentLocation(newLocation);

  为了完善程序,在程序处在onResume及onPause状态下都能及时更新地理位置信息以及取消更新,加上如下代码:

protectedvoidonResume(){

super.onResume();

locationManager.requestLocationUpdates(getBestProvider(),1000,1,this);

protectedvoidonPause(){

super.onPause();

locationManager.removeUpdates(this);

  小结

  在本系列的第一讲中,分步讲解了如何注册GoogleAPIKEY以及Mapview控件基本方法的使用,还有让读者了解到使用googlemap的初步步骤,在下一讲中,将指导读者如何对地图上的位置进行标注。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2