关于编写高德导航Demo的手记(一)
必备的环境配置:
1. JDK1.6;
2. android SDK1.5/1.6;
3. 高德给出的For Android的4.2包(MapApi.jar),里面支持应用开发的所有类库,全都封装在com.autonavi.mapapi当中。
为了使我们写的Demo能够支持最基本的网络开发,在开始编写代码之前,必须在AndroidManifest.xml中加入如下代码,以获得权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<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.RESTART_PACKAGES"></uses-permission>
package com.autonavi.AutoNavi;
import com.autonavi.mapapi.GeoPoint;
import com.autonavi.mapapi.MapView;
import com.autonavi.mapapi.PoiOverlay;
import com.autonavi.mapapi.Route;
import com.autonavi.AutoNavi.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class NaviDemoActivity extends Activity {
private MapView mv;
private EditText et;
private Button searchbtn;
private int mode = Route.BusDefault;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setInitView();
setListener();
}
/* 注册控件 */
private void setInitView() {
/* mapView控件 */
mv = (MapView) this.findViewById(R.id.mapView);
}
/* 注册控件的属性或事件 */
private void setListener() {
/* mapView控件 */
mv.setBuiltInZoomControls(true);
}
OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// 计算路径
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (intent != null) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
}
}
}
}
当一编写完代码,兴冲冲地打开虚拟机,编译不通过!而且java代码上还打上了红色的波浪线。Ctrl+1看出错提示,貌似找不到项目的核心文件R.java。
乖乖,刚开始学习就把R.java文件给弄丢了,怎么办?!
经过多方面的排查,检查了JDK,SDK,最后面把目标锁定在了下面三项(这些都是初学者容易犯的错误):
1.检查jar包路径,看是否有多余或空链的jar包;
2.检查所有图片、XML文件大小写问题,一律改为小写;
3.检查图片文件夹中是否有“Thumnb.db”,删除;
哈哈...问题基本排除了,点击重新编译,R.java文件又乖乖地回来了...(后经查实,该文件只要引用的jar路径+xml小写命名正确,eclipse会自动生成。)
接着,又开始编译,但随之出现了下图:

悲催!刚才还暗自高兴,没想到只成功了一半...
这回仔细地查看了LogCat中的信息,提示android.view.inflateException,貌似是Activity在OnCreate的时候就开始的。
排除了R.java文件没有正确生成,main.xml里面的com.autonavi.mapapi.MapView与高德给的jar包中的类大小写匹配,此时又比对高德给出的Demo,发现此处的Activity必须extends高德自己编写的MapActivity...
So...
将class声明的地方改为:
public class NaviDemoActivity extends MapActivity implements RouteMessageHandler, OnGestureListener
紧接着增加对几个class文件的引用:
import com.autonavi.mapapi.RouteMessageHandler; import com.autonavi.mapapi.RouteOverlay;
最后,点击编译,大功告成!简单的Demo就展示在我们面前了,如下图:

浙公网安备 33010602011771号