如何开发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了!