您的位置:首页 > 移动开发 > Android开发

创建一个简单android百度地图应用

2014-03-20 19:42 661 查看
1.首先新建一个安卓工程

2.申请一个属于自己的key(key 相当于百度地图的通行证)

http://developer.baidu.com/map/android-mobile-apply-key.htm

由于版本修改,对key进行了升级,我们可以申请最新的,也可以选择以前的。这里就不做解释了

3.在AndroidManifest.xml中设置权限和添加屏幕的支持

  <!-- 设置权限 -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

<!-- 添加对屏幕的支持 -->

<supports-screens android:largeScreens="true"

    android:normalScreens="true" android:smallScreens="true"

    android:resizeable="true" android:anyDensity="true"/>

4.jar包的添加   新建一个libs目录  放入下面两个文件



接着把baidumapapi.jar添加到构建路径中  右键---Build Path---Add....

5.在布局文件中写入支持百度地图显示试图控件

  <com.baidu.mapapi.MapView android:id="@+id/bmapView"

 android:layout_width="fill_parent" android:layout_height="fill_parent"

 android:clickable="true"    

/>

到这里一个简单的android应用的百度地图的环境就搭建好了。

 

这里开始就是工程代码了:

 

 

package com.scme.activity;

import com.baidu.mapapi.BMapManager;

import com.baidu.mapapi.GeoPoint;

import com.baidu.mapapi.MKAddrInfo;

import com.baidu.mapapi.MKBusLineResult;

import com.baidu.mapapi.MKDrivingRouteResult;

import com.baidu.mapapi.MKGeneralListener;

import com.baidu.mapapi.MKEvent;

import com.baidu.mapapi.MKPoiInfo;

import com.baidu.mapapi.MKPoiResult;

import com.baidu.mapapi.MKSearch;

import com.baidu.mapapi.MKSearchListener;

import com.baidu.mapapi.MKSuggestionResult;

import com.baidu.mapapi.MKTransitRouteResult;

import com.baidu.mapapi.MKWalkingRouteResult;

import com.baidu.mapapi.MapActivity;

import com.baidu.mapapi.MapController;

import com.baidu.mapapi.MapView;

import com.baidu.mapapi.RouteOverlay;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.widget.Toast;

public class MainActivity extends MapActivity{

// // 百度地图的相关控件

 private MapView mapView;

 // 加载百度地图引擎(控制开,关,显示等)

 private BMapManager bMapManager;

 // 百度地图的key

 private String key = "这里输入你申请的key";

 // 在百度地图上容器控件

 //private MapController mapController;

   //搜索公交线路

 private MKSearch mkSearch;

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  mapView = (com.baidu.mapapi.MapView) findViewById(R.id.bmapView);

  bMapManager = new BMapManager(MainActivity.this);

  bMapManager.init(key, new MKGeneralListener() {

   @Override

   public void onGetPermissionState(int arg0) {

    // TODO Auto-generated method stub

    if (arg0 == MKEvent.ERROR_PERMISSION_DENIED) {

     Toast toast = Toast.makeText(MainActivity.this, "验证key失败",

       Toast.LENGTH_LONG);

     toast.show();

    }

   }

   @Override

   public void onGetNetworkState(int arg0) {

    // TODO Auto-generated method stub

    if (arg0 == MKEvent.ERROR_NETWORK_CONNECT) {

     Toast toast = Toast.makeText(MainActivity.this, "网络连接失败",

       Toast.LENGTH_LONG);

     toast.show();

    }

   }

  });

  // 初始化Activity

  initMapActivity(bMapManager);

//公交路线

mkSearch = new MKSearch();

  mkSearch.init(bMapManager, new MySearchListner());

  //参数1:城市 参数2:公交车号

  mkSearch.poiSearchInCity("北京", "717");

  // 设置启用缩放功能

   mapView.setBuiltInZoomControls(true);

//   mapController = mapView.getController();

  //地图中标注一个点需要设置经纬度(地理坐标点,由纬度+经度构成)

//   GeoPoint gePoint = new GeoPoint(

//   (int) (39.9150494981 * 1E6), (int) (116.4037758869 * 1E6));

   // 设置地图中心点

  // mapController.setCenter(gePoint);

  //设置缩放级别 12倍

 mapController.setZoom(12);

   //显示交通地图

   //mapView.setTraffic(true);

   //显示卫星地图

  // mapView.setSatellite(true);

 }

 private final class MySearchListner implements MKSearchListener {

  @Override

  public void onGetAddrResult(MKAddrInfo arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  @Override

  public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {

   // TODO Auto-generated method stub

   if (arg0 == null || arg1 != 0) {

    Log.i("info", "未找到结果");

    return;

   }

   // 创建覆盖物对象

   RouteOverlay routelay = new RouteOverlay(MainActivity.this, mapView);

   routelay.setData(arg0.getBusRoute());

   mapView.getOverlays().clear();

   mapView.getOverlays().add(routelay);

   mapView.invalidate();

   // 动画形式描述公交站点

   //mapView.getController().animateTo(arg0.getBusRoute().getStart());

  }

  @Override

  public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  @Override

  public void onGetPoiDetailSearchResult(int arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  // 获取公交线路图的uid,并根据此uid发起此公交线路图的查询

  @Override

  public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {

   // TODO Auto-generated method stub

   if (arg0 == null || arg2 != 0) {

    Log.i("info", "未找到结果");

    return;

   }

   // 定义公交线路图的描述对象

   MKPoiInfo mkInfo = null;

   // 获取本次检索的公交线路的总站点数

   int totalpoiNum = arg0.getNumPois();

   for (int i = 0; i < totalpoiNum; i++) {

    mkInfo = arg0.getPoi(i);

    if (mkInfo.ePoiType == 2) {

     break;

    }

   }

   mkSearch.busLineSearch("北京", mkInfo.uid);

  }

  @Override

  public void onGetRGCShareUrlResult(String arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  @Override

  public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  @Override

  public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {

   // TODO Auto-generated method stub

  }

  @Override

  public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {

   // TODO Auto-generated method stub

  }

 }

 @Override

 protected void onDestroy() {

  // TODO Auto-generated method stub

  super.onDestroy();

  if (bMapManager != null) {

   bMapManager.destroy();

   bMapManager = null;

  }

 }

 // onCreate之后,以及每次横竖切屏,还有从其他界面返回的时候,都会调用onResume()

 @Override

 protected void onResume() {

  // TODO Auto-generated method stub

  super.onResume();

  if (bMapManager != null) {

   // 重新启动

   bMapManager.start();

  }

 }

 @Override

 protected void onPause() {

  // TODO Auto-generated method stub

  super.onPause();

  if (bMapManager != null) {

   bMapManager.stop();

  }

 }

 @Override

 protected boolean isRouteDisplayed() {

  // TODO Auto-generated method stub

  return false;

 }

}



以上是查看公交路线的代码

需要查看其他功能的只需修改其中的一部分代码即可:

 

 

查看地图信息:

 // 初始化Activity

  initMapActivity(bMapManager);

//  mkSearch = new MKSearch();

//  mkSearch.init(bMapManager, new MySearchListner());

//  //参数1:城市 参数2:公交车号

//  mkSearch.poiSearchInCity("北京", "717");

  // 设置启用缩放功能

   mapView.setBuiltInZoomControls(true);

   mapController = mapView.getController();

  // // 地图中标注一个点需要设置经纬度(地理坐标点,由纬度+经度构成)

   GeoPoint gePoint = new GeoPoint(

   (int) (39.9150494981 * 1E6), (int) (116.4037758869 * 1E6));

   // 设置地图中心点

   mapController.setCenter(gePoint);

  //设置缩放级别

   mapController.setZoom(12);

  // //显示交通地图

  // //mapView.setTraffic(true);

  // //显示卫星地图

  // mapView.setSatellite(true);

 



查看交通地图代码:

 // 初始化Activity

  initMapActivity(bMapManager);

//  mkSearch = new MKSearch();

//  mkSearch.init(bMapManager, new MySearchListner());

//  //参数1:城市 参数2:公交车号

//  mkSearch.poiSearchInCity("北京", "717");

  // 设置启用缩放功能

   mapView.setBuiltInZoomControls(true);

   mapController = mapView.getController();

  // // 地图中标注一个点需要设置经纬度(地理坐标点,由纬度+经度构成)

//   GeoPoint gePoint = new GeoPoint(

//   (int) (39.9150494981 * 1E6), (int) (116.4037758869 * 1E6));

   // 设置地图中心点

  // mapController.setCenter(gePoint);

  //设置缩放级别

   mapController.setZoom(12);

  // //显示交通地图

  mapView.setTraffic(true);

  // //显示卫星地图

  // mapView.setSatellite(true);



 

查看卫星视图代码:

 // 初始化Activity

  initMapActivity(bMapManager);

//  mkSearch = new MKSearch();

//  mkSearch.init(bMapManager, new MySearchListner());

//  //参数1:城市 参数2:公交车号

//  mkSearch.poiSearchInCity("北京", "717");

  // 设置启用缩放功能

   mapView.setBuiltInZoomControls(true);

   mapController = mapView.getController();

  // // 地图中标注一个点需要设置经纬度(地理坐标点,由纬度+经度构成)

//   GeoPoint gePoint = new GeoPoint(

//   (int) (39.9150494981 * 1E6), (int) (116.4037758869 * 1E6));

   // 设置地图中心点

  // mapController.setCenter(gePoint);

  //设置缩放级别

   mapController.setZoom(12);

  // //显示交通地图

  //mapView.setTraffic(true);

  // //显示卫星地图

   mapView.setSatellite(true);



另附:jar包,项目工程以及百度开发文档教材
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息