导航

在Android模拟器中使用google maps的基本配置

Posted on 2009-12-08 12:53  KevinYin  阅读(4134)  评论(5编辑  收藏  举报

前言:

今天翻了一个上午的网络,在android 模拟器下配置google maps遇到了问题,查阅了一堆资料,多数讲解的不是很清晰,呵呵,经过多次试验终于OK了,现把每一步详细列出来,提供给像我这样的初学者。大家共同进步


1)首先你要确定你安装的JDK位置,Windows->Preferences->Java->Installed JREs,你可以看到是Jre的location,再在dos cmd模式下查看你当前系统的path是否已经包含了。如果没有包含添加到当前环境参数中。因为我们要用到的keytool命令在这个目录下呀。
2)接下来就要找到你不前AVD的debug.keystore的位置,windows->perferences->android->build,
default debug keystore文本框中,列出C:\Documents and Settings\XXXXuser\.android\debug.keystore,这就是默认的debug.keystore,你可以先把这个文件改一下名。我们需要创建一个新的debug.keystore
3)紧接着我们来创建一个新的debug.keystore,在cmd下,进入C:\Documents and Settings\XXXXuser\.android目录
执行命令如下:
keytool -genkey -v -keystore debug.key store -alias androiddebugkey -keyalg RSA -validity 10000
输入密码,用户等信息确认后生成一个debug.keystore
4)好了,接下来我们就需要获取MD5,去google申请一个apikey,很简单
在当前目录下执行:
keytool -list -alias androiddebugkey -keystore debug.keystore
根据提示输入你在第三步所设的密码,ok,就会得到下面信息,
Certificate fingerprint (MD5): FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
这就是我们申请apikey时需要的FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4
通过浏览器访问http://code.google.com/android/maps-api-signup.html
在My certificate's MD5 fingerprint文本框中输入您刚刚获取到的MD5码
点击Generate API Key,
Thank you for signing up for an Android Maps API key!
Your key is:
0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A
这就是apikey了,记得保存下呀

5)新建一个android项目
修改main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<view class = "com.google.android.maps.MapView" 
 android:id = "@+id/my_map"
 android:enabled = "true"
 android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
</LinearLayout>
在layout中定义mapview时需要加入apikey, 如:android:apiKey="0yRkOg8325bNSbeuYXZMsj-CMG2rXXXqFBoa11A"
6)修改androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.testmap"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library  android:name="com.google.android.maps" />
        <activity android:name=".testmap"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="5" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
</manifest>

我们需要加入用户库引用<uses-library  android:name="com.google.android.maps" />
当然了还要加入权限的定义
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
这两步必不可少

7)最后就是主class了



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.os.Bundle;


public class testmap extends MapActivity {
    
/** Called when the activity is first created. */
    @Override
    
public void onCreate(Bundle savedInstanceState) {
     
super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
//get map view
        MapView mv = (MapView) findViewById(R.id.my_map);
        MapController controller  
= (MapController)mv.getController();
        
        GeoPoint p 
= new GeoPoint((int) (24.7 * 1000000),(int)(-238.8 * 1000000));
        controller.animateTo(p);
        controller.setZoom(
9);

    }
    @Override
    
protected boolean isRouteDisplayed() {
     
// TODO Auto-generated method stub
     return false;
    }
}