一个android google map 的界面~摸爬滚打跌跌撞撞。。我得记录一些下来不然到时候又忘。
2011-06-30 0:07

    最近要做一个类似于大众点评+地图的android应用。

    基本算是从头开始吧。。幸好环境当时搭好了。。(所以虽然电脑慢的要死但我现在又很不想装系统了因为好多东西装在了C盘。。必须要装在C盘)

   要做地图类的应用,以前下载的android SDK 2.2是不够用了,因为这个相当于标准包。木有复杂一点的东西,必需得来个Google APIs,而且是与android相对应的版本。

  1、假设你之前已经下载了android,找到那个目录,比如C:\android-sdk-windows,然后运行 SDK manager.(因为我之前一直用eclipse -> window -> android SDK and AVD manager 找更新但一直找不到。。这货就是一国产山寨的。。)

  2、SDK mamager -> installed packages->Refresh  -> 找到所需的API,比如Google APIs by Google Inc., Android API 8, revision 2(我的SDK 是 android 2.2 API 8 revision) -> accept -> install  特别注意可以将不用的SDK 和 API先 reject掉,不然速度很慢,而且装那么多也没什么用一般。。

 3、申请google map API key(debug版) 这个网上有很多文章但是我还是花了一番功夫。。

    a> eclipse -> window -> Preferences -> android ->build 找到你的debug keystroy的路径

    b>假如是C:\Users\Nily\.android\debug.keystore,然后进入.android,在cmd下执行如下命令keytool -list -keystore debug.keystore

   如图

  密码为空 直接回车

   如果说提示没有keytool,那就把你的jdk/bin目录添加到环境变量中去  e,g. 我的目录在C:\Program Files\Java\jdk1.6.0_21\bin

   (计算机->属性->高级属性设置->环境变量->path ->编辑,将路径复制到最前面)

  c-> 在http://code.google.com/intl/zh-CN/android/maps-api-signup.html 中输入你的MD5 即可获得密钥。 (前提貌似是必须有gmail邮箱)
   另外密钥是一台机器一个密钥,类似于mac地址的东西,所以将project移交到别的电脑上运行的时候,要改一下密钥的。

4、创建带google map 的AVD、项目。

  a> AVD  eclipse -> window -> android SDK and AVD manager  -> new ->target选刚才那个google APIs就可以

  b> 创建项目也差不多,注意的就是build target里选google APIs而不是android 2.2

5、然后代码嘛。。。直接贴出来好了。。经调试可以跑。

   manifest文件   这个就修改了两行。

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="map.test1"
      android:versionCode="1"
      android:versionName="1.0">
     <uses-permission android:name="android.permission.INTERNET" />    //以取得访问internet权限
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    <uses-library android:name="com.google.android.maps" />     //添加库
        <activity android:name=".map"
                  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>


</manifest>

+++++++++++++++++++++++++++++++++++++

main.xml文件

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/mainlayout"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

 

    <com.google.android.maps.MapView

        android:id="@+id/mapview"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:clickable="true"

        android:apiKey=" 你自己的密钥 换电脑换密钥"

    />

</RelativeLayout>

++++++++++++++++++++++++++++++++++++

XXXXXXX.java

package map.test1;


import android.os.Bundle;

import com.google.android.maps.MapActivity;   //不要忘了

import com.google.android.maps.MapView;       //同上

public class map extends MapActivity {  //继承MapActivity类

  private MapView mapView;

  @Override

  public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);

   setContentView(R.layout.main);

   mapView = (MapView) findViewById(R.id.mapview);

   mapView.setBuiltInZoomControls(true);

  }

  @Override

  protected boolean isRouteDisplayed(){ //调地图的

   return false;

     }
}

摘抄一段网上某位大牛的话。。通俗易懂

MapView这个类功能是从Google Map地图中获得数据并且展示地图。MapActivity的主要功能有:

  1) 管理Activity的生命周期

  2) 为MapView类建立和撤消相关的服务。

  在继承了MapActivity类后,我们要实现其中的isRouteDisplayed方法,这个方法其实是用来表示我们是否显示一些路线的信息,这个通常用在地图的飞行模式时才使用,这里我们不提供任何信息仅是返回false即可。

  在我们的activity中,我们将引用到MapView,它是在界面xml中定义的。同时我们也用到setBuiltInZoomControls方法设置地图允许缩放模式。

 

如此之后。。。。乃就可以run了。。。虚拟机启动比较慢,耐心等待就可以看到一个地图出现在你眼前了。。

做好出来就是这个样子

 

+++++++++++++++++++++++++++++++++++++

说说我遇到的问题以及解决方案。

1> SDK manager 更新的时候找不到google APIs。

   这个时候可以考虑手动下载。推荐一个还比较全的下载链接http://hi.baidu.com/%E8%A4%C0%C5jade/blog/item/93cf38f0f20a89fb7709d749.html  将你所需的包下载下来,解压到sdk包下的add-ons文件夹中,例如C:\android-sdk-windows\add-ons

 然后就算API安装成功了

2>当你用SDK manager 更新后重启eclipse可能会出现  Could not find C:\android-sdk-windows\tools\adb.exe!  这个错误。如果在你的C:\android-sdk-windows\tools目录下并没有adb.exe这个可执行文件,改一下你的环境变量,把原来的C:\android-sdk-windows\tools改成 C:\android-sdk-windows\platform-tools。其次,把C:\android-sdk-windows \platform-tools目录下的adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll 这三个文件拷到你C:\android-sdk-windows\tools目录下,重启Eclipse,不过它会提示你更新Android插件,按照提示做就OK了。