Android--------------百度地图

来源:互联网 发布:新业汽修软件注册码 编辑:程序博客网 时间:2024/06/02 07:01

1.首先注册一个百度地图开发者账号,获取密钥

Key的申请地址为:http://lbsyun.baidu.com/apiconsole/key

官方介绍申请密钥网址为:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key

获取开发版SHA1的方法:

第1步:运行进入控制台

第2步:定位到.android文件夹下,输入cd .android

第3步:输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),例如:

其中keytool为jdk自带工具;keystorefile为Android 签名证书文件

2.得到发布版SHA1密钥

第一步:打开Android studio 找到 Build------Generate  Signed APK...---------------Create  new(选择好生成Key的jks文件路径,方便获取密钥)------------选择APK所在的路径为该项目build下的outputs文件夹,选择release发布版,点击完成既可。

第二部:通过命令行根据刚才生成Key的jks文件路径获得密钥:keytool -v -list -keystore 文件名 (自己定义好的.jks文件名),你要口令为第一步设置的密码。

在百度地图创建应用时 应用名称为:values------strings里面的应用名称名;包名为build.gradle里面的包名。

3.提交百度地图的创建应用可以得到最后想要得到的AK

4.配置环境及发布

第一步:在百度地图开放平台的相关下载去下载

第二步:把下载下来的各个文件粘贴到Android studio的libs包下,工程配置还需要把jar包集成到自己的工程中,如图上图所示,放入libs目录下。对于每个jar文件,右键-选择Add As Library,导入到工程中。对应在build.gradle生成工程所依赖的jar文件说明

5.在AndroidManifest中添加开发密钥、所需权限等信息:

1)在application中添加开发密钥

    <meta-data          android:name="com.baidu.lbsapi.API_KEY"          android:value="创建完百度地图应用后得到的AK值" />

2)添加所需权限

<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.WAKE_LOCK"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS" />3)在build.gradle中的buildTypes中加入:
sourceSets { main() { jniLibs.srcDirs = ['libs'] } }

3)在布局xml文件中添加地图控件;

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

4)在应用程序创建时初始化 SDK引用的Context 全局变量:

public class MainActivityextends 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的初始化方法中


5)创建地图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();          }      }

6.完成以上步骤就可以展示出一个基本的地图





----------------------------------------------------------------------------------------------------------

定位:

参考文档:http://blog.csdn.net/ssh159/article/details/68940607?locationNum=10&fps=1

 private static final String TAG ="////////" ;
    private MapView bmapView;
    private BaiduMap mBaiduMap;
    private LocationClient mLocClient;
    private boolean isFirstLoc = true;
    public MyLocationListenner myListener = new MyLocationListenner();
    private String addrStr;
    private TextView hello;

    /**
     * 定位SDK监听函数
     */
    public class MyLocationListenner implements BDLocationListener {


        @Override
        public void onReceiveLocation(BDLocation location) {
            // map view 销毁后不在处理新接收的位置
            if (location == null || bmapView == null) {
                return;
            }

            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaiduMap.setMyLocationData(locData);

            //是否是第一次定位
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(18.0f);
                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
                if (mLocClient.isStarted()) {
                    // 获得位置之后停止定位
                    Log.i(TAG, "address://///////" +location.getAddrStr() );
                    hello.setText(location.getAddrStr());
                }
//            addrStr = location.getAddrStr();
//            hello.setText(addrStr);
            Log.i(TAG, "address://////////////////////////////////////////////////////////" +location.getAddrStr() );

        }


        public void onReceivePoi(BDLocation poiLocation) {
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        bmapView = (MapView) findViewById(R.id.bmapview);
        hello = (TextView) findViewById(R.id.hello);
        mBaiduMap = bmapView.getMap();
        mBaiduMap.setMyLocationEnabled(true);
        // 定位初始化
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);
        option.setIsNeedAddress(true); //可选,设置是否需要地址信息,默认不需要
        mLocClient.setLocOption(option);
        mLocClient.start();
    }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
            bmapView.onDestroy();
        }
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
            bmapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
            bmapView.onPause();
        }











原创粉丝点击