当前位置: 代码迷 >> Android >> 怎么开发Android Maps
  详细解决方案

怎么开发Android Maps

热度:34   发布时间:2016-05-01 16:49:23.0
如何开发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. */?

[email protected]

?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);?

?}

[email protected]

?protected boolean isLocationDisplayed(){

??return false;

?}

?

?

@Override

protected boolean isRouteDisplayed() {

?// TODO Auto-generated method stub

?return false;

}

?

[email protected]

?public boolean onCreateOptionsMenu(Menu menu) {?

?// 建立菜单?

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

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

?return super.onCreateOptionsMenu(menu);?

?}

?

[email protected]

?public boolean onKeyDown(int keyCode, KeyEvent event) {?

?return super.onKeyDown(keyCode, event);?

?}

?

[email protected]

?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()?

?{

?

?

[email protected]

?public void onClick(DialogInterface dialog, int which) {?

?chooseItem=which;?

?}?

?})?

?.setPositiveButton("确定", new DialogInterface.OnClickListener()?

?{

?

[email protected]

?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() {

?

[email protected]

?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
  在正式使用Google Map API前,必须先生成Google Map API KEY。具体的详细步骤请参考一文
  (http://code.google.com/intl/zh-CN/android/add-ons/google-apis/mapkey.html),下面概括了其要点如下。
  首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。
  Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是linux系统,则位于
  $JAVA_HOME/bin下的,比如windows下在C:programsJavajdk1.6.0_18in下。
  在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的build tools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的 keystore密钥库,在不同的操作系统中,keystore位于如下位置:
· Windows Vista: C:Users\.androiddebug.keystore
  · Windows XP: C:Documents and Settings\.androiddebug.keystore
  · OS X and Linux: ~/.android/debug.keystore
  接下来,我们开始使用keytool工具产生md5密纹,命令行下输入如下语句:
  %JAVA_HOME%/bin/keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
  现在我们就产生了debug模式下的MD5密纹了,要注意的是,你必须重新为生产环境下的应用重新生成一次MD5密纹,因为如果在不同的Android SDK或者不同的开发环境下,MD5密纹是不同的,否则换了环境的话Google Map将不会工作。
  产生的MD5密纹的输出如下面:
  androiddebugkey, Apr 2, 2010, PrivateKeyEntry,
  Certificate fingerprint (MD5): 72:BF:25:C1:AF:4C:C1:2F:34:D9:B1:90:35:XX:XX:XX
  接下来,我们要到Google Map API的主页去申请一个Map的key了,可以访问
2 楼 zjutsoft 2011-04-18  
http://code.google.com/android/maps-api-signup.html
  相关解决方案