Android-百度地图的调用 (基础版本)

来源:互联网 发布:苹果笔记本推荐 知乎 编辑:程序博客网 时间:2024/06/08 06:46

之前写了一篇Android-百度地图的调用(检索功能)是因为我所在公司的项目有用到东西,作了一些简单的分享。

这篇文章也是简单的介绍一下百度地图的基础地图使用
现在百度开发者平台提供的Android SDK 版本是 - Android SDK V 3.4.0.

1,什么是百度地图Android SDK ?(简单看看从官网的截图)



2.  如何获取定制的百度地图SDK。
开发者可在百度地图Android SDK的下载页面下载到最新版的地图SDK,

下载地址为:http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download

3. 基础地图。


一,显示百地图
百度地图SDK为开发者提供了便捷的显示百度地图数据的接口,通过以下几步操作,即可在您的应用中使用百度地图数据:
第一步:创建并配置工程(具体方法参见工程配置部分的介绍);
第二步:在AndroidManifest中添加开发密钥、所需权限等信息;

1)在application中添加开发密钥

<application>      <meta-data          android:name="com.baidu.lbsapi.API_KEY"          android:value="开发者 key" />  </application>


2)添加所需权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />  <uses-permission android:name="android.permission.USE_CREDENTIALS" />  <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <uses-permission android:name="android.permission.INTERNET" />  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  <uses-permission android:name="android.permission.ACCESS_WIFI_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.BROADCAST_STICKY" />  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
第三步,在布局xml文件中添加地图控件;

<com.baidu.mapapi.map.MapView      android:id="@+id/bmapView"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      android:clickable="true" />
第四步,在应用程序创建时初始化 SDK引用的Context 全局变量:

public class MainActivity extends Activity {      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);           //在使用SDK各组件之前初始化context信息,传入ApplicationContext          //注意该方法要再setContentView方法之前实现          SDKInitializer.initialize(getApplicationContext());          setContentView(R.layout.activity_main);      }  }

注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法

第五步,创建地图Activity,管理地图生命周期;


public class MainActivity extends Activity {      MapView mMapView = null;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);           //在使用SDK各组件之前初始化context信息,传入ApplicationContext          //注意该方法要再setContentView方法之前实现          SDKInitializer.initialize(getApplicationContext());          setContentView(R.layout.activity_main);          //获取地图控件引用          mMapView = (MapView) findViewById(R.id.bmapView);      }      @Override      protected void onDestroy() {          super.onDestroy();          //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理          mMapView.onDestroy();      }      @Override      protected void onResume() {          super.onResume();          //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理          mMapView.onResume();          }      @Override      protected void onPause() {          super.onPause();          //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理          mMapView.onPause();          }      }
完成以上步骤后,运行程序,即可在您的应用中显示如下地图:




二 ,基础地图


(1),地图类型

mMapView = (MapView) findViewById(R.id.bmapView);  mBaiduMap = mMapView.getMap();  //普通地图  mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);  //卫星地图  mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
(2),实时交通图

mMapView = (MapView) findViewById(R.id.bmapView);  mBaiduMap = mMapView.getMap();  //开启交通图   mBaiduMap.setTrafficEnabled(true);
(3),城市热力图

mMapView = (MapView) findViewById(R.id.bmapView);  mBaiduMap = mMapView.getMap();  //开启交通图   mBaiduMap.setBaiduHeatMapEnabled(true);
(4),标志覆盖物

//定义Maker坐标点  LatLng point = new LatLng(39.963175, 116.400244);  //构建Marker图标  BitmapDescriptor bitmap = BitmapDescriptorFactory      .fromResource(R.drawable.icon_marka);  //构建MarkerOption,用于在地图上添加Marker  OverlayOptions option = new MarkerOptions()      .position(point)      .icon(bitmap);  //在地图上添加Marker,并显示  mBaiduMap.addOverlay(option);


(5),文字覆盖物

//定义文字所显示的坐标点  LatLng llText = new LatLng(39.86923, 116.397428);  //构建文字Option对象,用于在地图上添加文字  OverlayOptions textOption = new TextOptions()      .bgColor(0xAAFFFF00)      .fontSize(24)      .fontColor(0xFFFF00FF)      .text("百度地图SDK")      .rotate(-30)      .position(llText);  //在地图上添加该文字对象并显示  mBaiduMap.addOverlay(textOption);

(6),弹窗覆盖物

//创建InfoWindow展示的view  Button button = new Button(getApplicationContext());  button.setBackgroundResource(R.drawable.popup);  //定义用于显示该InfoWindow的坐标点  LatLng pt = new LatLng(39.86923, 116.397428);  //创建InfoWindow , 传入 view, 地理坐标, y 轴偏移量 InfoWindow mInfoWindow = new InfoWindow(button, pt, -47);  //显示InfoWindow  mBaiduMap.showInfoWindow(mInfoWindow);

(7),检索结果覆盖物

针对检索功能模块(POI检索、线路规划等),地图SDK还对外提供相应的覆盖物来快速展示结果信息。这些方法都是开源的,开发者可根据自己的实际去求来做个性化的定制。

利用检索结果覆盖物展示POI搜索结果的方式如下:

第一步,构造自定义 PoiOverlay 类;

private class MyPoiOverlay extends PoiOverlay {      public MyPoiOverlay(BaiduMap baiduMap) {          super(baiduMap);      }      @Override      public boolean onPoiClick(int index) {          super.onPoiClick(index);          return true;      }  }

第二步,在POI检索回调接口中添加自定义的PoiOverlay;

public void onGetPoiResult(PoiResult result) {      if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {          return;      }      if (result.error == SearchResult.ERRORNO.NO_ERROR) {          mBaiduMap.clear();          //创建PoiOverlay          PoiOverlay overlay = new MyPoiOverlay(mBaiduMap);          //设置overlay可以处理标注点击事件          mBaiduMap.setOnMarkerClickListener(overlay);          //设置PoiOverlay数据          overlay.setData(result);          //添加PoiOverlay到地图中          overlay.addToMap();          overlay.zoomToSpan();          return;      }  }
运行结果如下:


分享到此结束~ 如有疑问可以留言,一起交流交流~~

0 0
原创粉丝点击