zoukankan      html  css  js  c++  java
  • 关于编写高德导航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就展示在我们面前了,如下图:

  • 相关阅读:
    [Python]计算豆瓣电影TOP250的平均得分
    [Golang]使用自建代理访问指定网站
    HDU 2689.Sort it-冒泡排序
    HDU 1728.逃离迷宫-BFS
    hihoCoder #1498.Diligent Robots
    POJ 2503.Babelfish-sscanf()函数+strcmp()函数+二分
    Codeforces 608 B. Hamming Distance Sum-前缀和
    Codeforces 608 A. Saitama Destroys Hotel
    sscanf()函数
    UVA 11461.Square Numbers
  • 原文地址:https://www.cnblogs.com/jaenson/p/2228233.html
Copyright © 2011-2022 走看看