如何开发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-libraryandroid:name="com.google.android.maps" />
?
这句话要放在Action里面,然后还要给权限
?
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
?? ?<uses-permission android: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="你申请的MAPS API KEY"
?? ? ? ? ? ? ? ? />?
?
?
?
然后你在你的java程序里添加内容
?
现引用main.xml文件还要导入一些谷歌的包
?
import com.google.android.maps.GeoPoint;?
import com.google.android.maps.MapActivity;?
import com.google.android.maps.MapController;?
import com.google.android.maps.MapView;?
import android.app.AlertDialog;?
import android.app.Dialog;?
import android.content.DialogInterface;?
import android.os.Bundle;?
import android.view.KeyEvent;?
import android.view.Menu;?
import android.view.MenuItem;
?
public class MapsActivity extends MapActivity {
?
?// 地图显示控制相关变量定义?
?private MapView map=null;?
?private MapController mapCon;
?
?// 菜单项?
?final private int menuMode=Menu.FIRST;?
?final private int menuExit=Menu.FIRST+1;?
?private int chooseItem=0;?
?final CharSequence[] MapMode =new CharSequence[]{"卫星地图","街道地图"};
?
?/** Called when the activity is first created. */?
?@Override?
?public void onCreate(Bundle savedInstanceState) {?
?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);
?
?// 设置初始地图的中心位置?
?GeoPoint geoBeijing=new GeoPoint((int)(39.95*10000000), (int)(116.37*10000000));?
?mapCon=map.getController();?
?mapCon.setCenter(geoBeijing);?
?}
?@Override
?protected boolean isLocationDisplayed(){
??return false;
?}
?
?
@Override
protected boolean isRouteDisplayed() {
?// TODO Auto-generated method stub
?return false;
}
?
?@Override?
?public boolean onCreateOptionsMenu(Menu menu) {?
?// 建立菜单?
?menu.add(0,menuMode,0,"地图模式");?
?menu.add(0, menuExit, 1, "退出");?
?return super.onCreateOptionsMenu(menu);?
?}
?
?@Override?
?public boolean onKeyDown(int keyCode, KeyEvent event) {?
?return super.onKeyDown(keyCode, event);?
?}
?
?@Override?
?public boolean onMenuItemSelected(int featureId, MenuItem item) {?
?switch (item.getItemId()) {?
?case menuExit:?
?finish();?
?break;?
?case menuMode:?
?Dialog dMode=new AlertDialog.Builder(this)?
?.setTitle("地图模式设置")?
?.setSingleChoiceItems(MapMode, chooseItem, new DialogInterface.OnClickListener()?
?{
?
?
?@Override?
?public void onClick(DialogInterface dialog, int which) {?
?chooseItem=which;?
?}?
?})?
?.setPositiveButton("确定", new DialogInterface.OnClickListener()?
?{
?
?@Override?
?public void onClick(DialogInterface dialog, int which) {?
?switch (which) {?
?case 0:?
?map.setSatellite(true);?
?//map.setTraffic(false);?
?//map.setStreetView(false);?
?break;?
?case 1:?
?//map.setSatellite(false);?
?map.setTraffic(true);?
?//map.setStreetView(false);?
?break;?
?case 2:?
?//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;?
?}?
?return super.onMenuItemSelected(featureId, item);?
?}
?
?}
?
?
?
然后运行就OK了!
?
good luck!
1 楼 zjutsoft 2011-04-18 获得Google Map API Key