百度地图 helloword

来源:互联网 发布:治愈动漫电影知乎 编辑:程序博客网 时间:2024/06/08 06:24
                                                                                百度地图的helloword


目的
在安卓模拟器上显示出指定经纬度地点的地图并实现缩放功能
工具
a.百度地图API(2.1.2)b.安卓开发ADT adt-bundle-windows-x86-20140321
内容
a.所使用的class有BMapManager,MapViewinterface有MapController
b.过程: 
准备工作:

1.     获取百度地图key
地址:http://developer.baidu.com/map/android-mobile-apply-key.htm
2. 在Manifest.xml文件中添加权限
包含:gps:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    wifi:<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    internet:<uses-permission android:name="android.permission.INTERNET"/ >
   获取手机信息:<uses-permission android:name="android.permission.READ_PHONE_STATE" />
3.在工程中添加jar包和.so文件
baidumapapi_v2_1_2.jar 
locSDK_3.1.jar
liblocSDK3.so

主体工作: 在Layout文件中添加MapView的控件,
<com.baidu.mapapi.map.MapView
        android:id="@+id/mapview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      />


关于这个控件的作用我们可以理解为运行时百度地图如果发现有MapView,就会在第一时间加载地图
这就产生了加载KEY的问题,KEY应该在 setContentView(R.layout.fragment_main);之前加载!

这里我们把KEY作为一个定义的接口Constantkey中的一个常量
public interface Constantkey {
String key ="自己的key"

那么具体如何实现验证KEY呢?这里需要我们实例化BMapManager对象后使用init方法
bmapmanager = new BMapManager(getApplicationContext());
bmapmanager.init(Constantkey.key,new MyGeneralListener());

这里有一个MyGnenralListener(),它继承MGGeneralListener( )接口
其中有两个方法,分别是用来判断网络故障和权限问题

public class MyGeneralListener implements MKGeneralListener {


@Override
public void onGetNetworkState(int iError) {
// TODO Auto-generated method stub
System.out.print("网络故障");


}


@Override
public void onGetPermissionState(int iError) {
// TODO Auto-generated method stub
System.out.print("权限不够");



}


}


接下来就是关于BMapView类的使用了,为了是现放缩功能我们使用方法        
mapview.setBuiltInZoomControls(true);

还有mapcontroller,它和mapview是一种类之间的组合关系
mapcontroller=mapview.getController()
使用它我们就可以实现任意经纬度在地图上显示的功能了
先定义一个点 point =  new GeoPoint((int) (39.909604* 1E6),(int) (116.397228 * 1E6));
再使用setCenter方法mapcontroller.setCenter(point);就可以看到设置的点。

0 0
原创粉丝点击