如何开发Android Maps

在开发Android应用软件的时候难免用到Maps,在开发Maps 的时候要先到谷歌的网站上注册一个Maps key然后才能在项目中使用。

http://code.google.com/intl/ja-JP/android/maps-api-signup.html

上面这个地址是获取MD5的值,但是你必须现有一串字符串才能注册,这个字符串如何获取呢?

方法:

在DOS下面运行keytool 他会出现一堆的命令,这是你可以根据命令提示输入命令,

keytool这只是让大家看看命令提示,你可以直接在dos命令里输入一下内容即可:

keytool -list -alias androiddebugkey -keystore “文件路径” -storepassandroid -keypass android

文件路径就是你的debug.keystore文件的绝对路径,如果你不知道的话你可以在开发工具里面看看,如果你是用的Eclipse的话你可以从window-->preferences-->android-->build-->Default debug keystore里面的值就是文件的路径,在输入的时候路径两边的引号不能少。

一般路径的默认地址是:C:\Users\Administrator\.android\debug.keystore,这个是windows7的默认路径,Administrator是你计算机的名称,可以根据具体的情况而定。

输入命令以后回车,会出现MD5的值。

然后到谷歌官网上注册即可,有了Maps API Key以后就可以新建Maps的项目。

新建项目以后你要在Android AVD里面新建一个google API的虚拟机然后在修改文件的AndroidMainfest.xml文件,在文件里面添加

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

这句话要放在Action里面,然后还要给权限

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

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

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

然后你还要修改main.xml文件在文件里面添加

<com.google.android.maps.MapView

android:id="@+id/map"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:enabled="true"

android:clickable="true"

android:apiKey="你申请的MAPSAPIKEY"

                 /> 

然后你在你的java程序里添加内容

现引用main.xml文件还要导入一些谷歌的包

import com.google.android.maps.GeoPoint; 

importcom.google.android.maps.MapActivity;

importcom.google.android.maps.MapController;

importcom.google.android.maps.MapView;

importandroid.app.AlertDialog;

importandroid.app.Dialog;

importandroid.content.DialogInterface;

importandroid.os.Bundle;

importandroid.view.KeyEvent;

importandroid.view.Menu;

import android.view.MenuItem;

public class MapsActivity extends MapActivity {

 // 地图显示控制相关变量定义 

privateMapViewmap=null;

 private MapController mapCon;

 // 菜单项 

finalprivateintmenuMode=Menu.FIRST;

finalprivateintmenuExit=Menu.FIRST+1;

privateintchooseItem=0;

 final CharSequence[] MapMode =new CharSequence[]{"卫星地图","街道地图"};

 /** Called when the activity is first created. */ 

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

 setContentView(R.layout.main);

 // 获取MapView 

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

//设置显示模式

map.setTraffic(true);

map.setSatellite(false);

map.setStreetView(true);

//设置可以缩放

 map.setBuiltInZoomControls(true);

 // 设置初始地图的中心位置 

GeoPointgeoBeijing=newGeoPoint((int)(39.95*10000000),(int)(116.37*10000000));

mapCon=map.getController();

mapCon.setCenter(geoBeijing);

}

@Override

protectedbooleanisLocationDisplayed(){

returnfalse;

}

@Override

protectedbooleanisRouteDisplayed(){

//TODOAuto-generatedmethodstub

returnfalse;

}

 @Override 

publicbooleanonCreateOptionsMenu(Menumenu){

//建立菜单

menu.add(0,menuMode,0,"地图模式");

menu.add(0,menuExit,1,"退出");

returnsuper.onCreateOptionsMenu(menu);

 }

 @Override 

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

returnsuper.onKeyDown(keyCode,event);

 }

 @Override 

publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){

switch(item.getItemId()){

casemenuExit:

finish();

break;

casemenuMode:

DialogdMode=newAlertDialog.Builder(this)

.setTitle("地图模式设置")

.setSingleChoiceItems(MapMode,chooseItem,newDialogInterface.OnClickListener()

 {

  

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

chooseItem=which;

}

})

.setPositiveButton("确定",newDialogInterface.OnClickListener()

 {

 @Override 

publicvoidonClick(DialogInterfacedialog,intwhich){

switch(which){

case0:

map.setSatellite(true);

//map.setTraffic(false);

//map.setStreetView(false);

break;

case1:

//map.setSatellite(false);

map.setTraffic(true);

//map.setStreetView(false);

break;

case2:

//map.setSatellite(false);

//map.setTraffic(false);

map.setStreetView(true);

break;

default:

break;

}

}

})

 .setNegativeButton("取消", new DialogInterface.OnClickListener() {

 @Override  public void onClick(DialogInterface dialog, int which) {

 } 

})

.create();

dMode.show();

break;

default:

break;

}

returnsuper.onMenuItemSelected(featureId,item);

 }

 }

然后运行就OK了!

相关推荐