android 百度地图路径规划问题(第一篇)

来源:互联网 发布:淘宝家具沙发 编辑:程序博客网 时间:2024/05/01 09:01
4)创建安卓工程
      

   工程创建完成后,将baidumapapi.jar和libBMapApiEngine.so分别拷贝到工程的根目录及libs/armeabi目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定baidumapapi.jar,这样就可以在应用中使用百度地图API了。工程完整的目录结构如下图所示:




 说明:百度地图移动版api支持Android 1.5及以上系统,因此我们创建的工程应基于Android SDK 1.5及以上。

5)在布局文件中添加地图控件(res/layout/main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />


</LinearLayout>

6)创建Activity继承com.baidu.mapapi.MapActivity

/*
 * Copyright (C) 2015 Baidu, Inc. All Rights Reserved.
 */
package baidumapsdk.demo;


import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;


import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.VersionInfo;


public class BMapApiDemoMain extends Activity {
    private static final String LTAG = BMapApiDemoMain.class.getSimpleName();


/**
* 构造广播监听类,监听 SDK key 验证以及网络异常广播
*/
public class SDKReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String s = intent.getAction();
Log.d(LTAG, "action: " + s);
TextView text = (TextView) findViewById(R.id.text_Info);
text.setTextColor(Color.RED);
if (s.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {
text.setText("key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置");
} else if (s
                    .equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK)) {
   text.setText("key 验证成功! 功能可以正常使用");
   text.setTextColor(Color.YELLOW);
}
else if (s
.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {
text.setText("网络出错");
}
}
}


    private SDKReceiver mReceiver;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView text = (TextView) findViewById(R.id.text_Info);
        text.setTextColor(Color.YELLOW);
        text.setText("欢迎使用百度地图Android SDK v" + VersionInfo.getApiVersion());
        ListView mListView = (ListView) findViewById(R.id.listView);
        // 添加ListItem,设置事件响应
        mListView.setAdapter(new DemoListAdapter());
        mListView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View v, int index,
                    long arg3) {
                onListItemClick(index);
            }
        });


// 注册 SDK 广播监听者
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_OK);
iFilter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);
iFilter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);
mReceiver = new SDKReceiver();
registerReceiver(mReceiver, iFilter);
}


    void onListItemClick(int index) {
        Intent intent = null;
        intent = new Intent(BMapApiDemoMain.this, DEMOS[index].demoClass);
        this.startActivity(intent);
    }


    private static final DemoInfo[] DEMOS = {
            new DemoInfo(R.string.demo_title_basemap,
                    R.string.demo_desc_basemap, BaseMapDemo.class),
            new DemoInfo(R.string.demo_title_map_fragment,
                    R.string.demo_desc_map_fragment, MapFragmentDemo.class),
            new DemoInfo(R.string.demo_title_layers, R.string.demo_desc_layers,
                    LayersDemo.class),
            new DemoInfo(R.string.demo_title_multimap,
                    R.string.demo_desc_multimap, MultiMapViewDemo.class),
            new DemoInfo(R.string.demo_title_control,
                    R.string.demo_desc_control, MapControlDemo.class),
            new DemoInfo(R.string.demo_title_ui, R.string.demo_desc_ui,
                    UISettingDemo.class),
            new DemoInfo(R.string.demo_title_location,
                    R.string.demo_desc_location, LocationDemo.class),
            new DemoInfo(R.string.demo_title_geometry,
                    R.string.demo_desc_geometry, GeometryDemo.class),
            new DemoInfo(R.string.demo_title_overlay,
                    R.string.demo_desc_overlay, OverlayDemo.class),
            new DemoInfo(R.string.demo_title_heatmap, R.string.demo_desc_heatmap,
                    HeatMapDemo.class),
            new DemoInfo(R.string.demo_title_geocode,
                    R.string.demo_desc_geocode, GeoCoderDemo.class),
            new DemoInfo(R.string.demo_title_poi, R.string.demo_desc_poi,
                    PoiSearchDemo.class),
            new DemoInfo(R.string.demo_title_route, R.string.demo_desc_route,
                    RoutePlanDemo.class),
            new DemoInfo(R.string.demo_title_districsearch,
                    R.string.demo_desc_districsearch,
                    DistrictSearchDemo.class),
            new DemoInfo(R.string.demo_title_bus, R.string.demo_desc_bus,
                    BusLineSearchDemo.class),
            new DemoInfo(R.string.demo_title_share, R.string.demo_desc_share,
                    ShareDemo.class),
            new DemoInfo(R.string.demo_title_offline,
                    R.string.demo_desc_offline, OfflineDemo.class),
            new DemoInfo(R.string.demo_title_radar,
                    R.string.demo_desc_radar, RadarDemo.class),
            new DemoInfo(R.string.demo_title_open_baidumap, R.string.demo_desc_open_baidumap,
                    OpenBaiduMap.class),
            new DemoInfo(R.string.demo_title_favorite,
                    R.string.demo_desc_favorite, FavoriteDemo.class),
            new DemoInfo(R.string.demo_title_cloud, R.string.demo_desc_cloud,
                    CloudSearchDemo.class),
            new DemoInfo(R.string.demo_title_opengl, R.string.demo_desc_opengl,
                    OpenglDemo.class),
            new DemoInfo(R.string.demo_title_cluster, R.string.demo_desc_cluster, MarkerClusterDemo.class),
            new DemoInfo(R.string.demo_title_tileoverlay, R.string.demo_desc_tileoverlay,
                    TileOverlayDemo.class),
            new DemoInfo(R.string.demo_desc_texturemapview, R.string.demo_desc_texturemapview,
                    TextureMapViewDemo.class),
    };


    @Override
    protected void onResume() {
        super.onResume();
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 取消监听 SDK 广播
        unregisterReceiver(mReceiver);
    }


    private class DemoListAdapter extends BaseAdapter {
        public DemoListAdapter() {
            super();
        }


        @Override
        public View getView(int index, View convertView, ViewGroup parent) {
            convertView = View.inflate(BMapApiDemoMain.this,
                    R.layout.demo_info_item, null);
            TextView title = (TextView) convertView.findViewById(R.id.title);
            TextView desc = (TextView) convertView.findViewById(R.id.desc);
            title.setText(DEMOS[index].title);
            desc.setText(DEMOS[index].desc);
            if (index >= 16) {
                title.setTextColor(Color.YELLOW);
            }
            return convertView;
        }


        @Override
        public int getCount() {
            return DEMOS.length;
        }


        @Override
        public Object getItem(int index) {
            return DEMOS[index];
        }


        @Override
        public long getItemId(int id) {
            return id;
        }
    }


    private static class DemoInfo {
        private final int title;
        private final int desc;
        private final Class<? extends Activity> demoClass;


        public DemoInfo(int title, int desc,
                Class<? extends Activity> demoClass) {
            this.title = title;
            this.desc = desc;
            this.demoClass = demoClass;
        }
    }
}


7)在AndroidManifest.xml中配置


<?xml version="1.0" encoding="utf-8"?>
<!-- ~ Copyright (C) 2015 Baidu, Inc. All Rights Reserved. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="baidumapsdk.demo"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="10" />


    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_TASKS" />


    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="false"
        android:resizeable="true"
        android:smallScreens="true" />




    <application
        android:name=".DemoApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:hardwareAccelerated="true" >
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="Tp1NFhwWns02ozpePX9gWFau" />


        <activity
            android:name=".BMapApiDemoMain"
            android:configChanges="orientation|keyboardHidden"
            android:label="BaiduMapSDKDemo"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".BaseMapDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_basemap"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".FragmentTableActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_basemap"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".MapFragmentDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_map_fragment"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".MultiMapViewDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_multimap"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".GeometryDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_geometry"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".RadarDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_radar"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".FavoriteDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_favorite"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".LocationDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_location"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".MapControlDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_control"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".UISettingDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_ui"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".LayersDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_layers"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".OverlayDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_overlay"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".OfflineDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_offline"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".PoiSearchDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_poi"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".RoutePlanDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_route"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".GeoCoderDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_geocode"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".BusLineSearchDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_bus"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".HeatMapDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_heatmap"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".ShareDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_share"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".ShareDemoActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_share"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".OpenBaiduMap"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_open_baidumap"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".CloudSearchActivity"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_cloud"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".CloudSearchDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/title_activity_cloud_search_demo"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".OpenglDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_opengl"
            android:screenOrientation="portrait" >
        </activity>
        <activity
            android:name=".TextureMapViewDemo"
            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_desc_texturemapview">
        </activity>
        <activity
            android:name=".TileOverlayDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_tileoverlay"
            android:screenOrientation="portrait" >
        </activity>


        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>


        <activity
            android:name=".MarkerClusterDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/title_activity_marker_cluster_demo"
            android:screenOrientation="portrait" >
        </activity>


        <activity
            android:name=".DistrictSearchDemo"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/demo_name_districsearch"
            android:screenOrientation="portrait">
        </activity>
    </application>


</manifest>


本文只是简单的展示了如何使用百度地图

1 0
原创粉丝点击