关于编写高德导航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就展示在我们面前了,如下图:

原文地址:https://www.cnblogs.com/jaenson/p/2228233.html