使用获取SHA1
然后去百度搜
然后注册,注意密码大小写都要有!!!
然后点击控制台
然后点击创建应用
应用名称随便写,应用类型选择Android SDK,包名是你创建的demo名,在清单文件中可以找到再把已经用它
获得的SHA1输入进去(他获得的是所有的,点击复制后现在一个空的text文件中粘贴,只要SHA1就可以了,千万别弄错了,不然出不来,key值不对)
最后点击提交
就会跳到这个页面
然后在清单文件中添加(我第一次就弄错了,第二次才弄好,就是key值不对)
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="Mya3ucDDwmLBPfUg9jV8E680uYgZv6Gu" />
下面是需要导入的包
然后开始写代码
主页面
package com.example.lx_baiduditu; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.ZoomControls; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatus; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.UiSettings; import com.baidu.mapapi.model.LatLng; import com.example.lx_baiduditu.R; public class MainActivity extends AppCompatActivity implements View.OnClickListener { //主要是用Map对象来改变坐标用的.清华大学坐标,创建LatLng(40.009424, 116.332556); LatLng xh=new LatLng(31.832944,117.191521); //北京大学坐标. (39.997743, 116.316176); LatLng HC=new LatLng(31.891637,117.324073); //天安门坐标 (39.915112, 116.403963) private MapView mapView_mv; private BaiduMap baiduMap; private Button zoomOut_bt; private Button zoomIn_bt; private Button setCompassEnabled_bt; private Button rotate_bt; private Button overlook_bt; private Button newLatLng_bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 setContentView(R.layout.activity_main); //控件初始化 initView(); //运行后自动隐藏百度的logo View child = mapView_mv.getChildAt(1); if (child != null && (child instanceof ImageView || child instanceof ZoomControls)){ child.setVisibility(View.INVISIBLE); } //1.0,使用MapVIew对象,控制是否显示MapVIew上面的按钮 //设置不显示缩放控件 该方法的参数是boolen,false是不显示缩放控件 mapView_mv.showScaleControl(false); //设置不显示比例尺控件 该方法的参数是boolen,false是不显示比例尺控件 mapView_mv.showZoomControls(false); //2.获取获取最小(3)、最大缩放级别(21) //获取最小的级别,map对象.getMinZoomLevel(); float minZoomLevel = baiduMap.getMinZoomLevel(); System.out.println("地图最小的级别minZoomLevel: "+minZoomLevel); //获取最大的级别,map对象.getMaxZoomLevel(); float maxZoomLevel = baiduMap.getMaxZoomLevel(); System.out.println("地图最大的级别maxZoomLevel: "+maxZoomLevel); //3.进入地图,默认的中心点是天安门,改变地图中心点为新华大学. //使用MapStatusUpdateFactory工厂调用newLatLng方法,参数还是一个LatLng对象(其参数,先是维度,后是经度) MapStatusUpdate newLatLng = MapStatusUpdateFactory.newLatLng(xh); //BaiduMap对象调用setMapStatus方法往里面穿参数MapStatusUpdate对象. baiduMap.setMapStatus(newLatLng); //4.设置地图缩放为15,使用MapStatusUpdateFactory工厂调用zoomTo,得到MapStatusUpdate对象. MapStatusUpdate zoomTo = MapStatusUpdateFactory.zoomTo(15); //BaiduMap对象调用setMapStatus方法往里面穿参数(MapStatusUpdate)对象. baiduMap.setMapStatus(zoomTo); } /* * 5.通过点击事件,更新地图状态(就是让地图,放大缩小,旋转,俯仰,移动,隐藏指南针) * @param */ public void onClick(View v) { switch (v.getId()) { case R.id.zoomOut_bt: //缩小,使用MapStatusUpdateFactory工厂调用zoomOut方法,得到MapStatusUpdate MapStatusUpdate zoomOut = MapStatusUpdateFactory.zoomOut(); //在用map对象.setMapStatus,把MapStatusUpdate对象传入. baiduMap.setMapStatus(zoomOut); break; case R.id.zoomIn_bt: //放大,使用MapStatusUpdateFactory工厂调用zoomIn,得到MapStatusUpdate MapStatusUpdate zoomIn = MapStatusUpdateFactory.zoomIn(); //在用map对象.setMapStatus,把MapStatusUpdate对象传入. baiduMap.setMapStatus(zoomIn); break; case R.id.rotate_bt: //旋转(0 ~ 360),每次在原来的基础上再旋转30度 // 获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus MapStatus mapStatus = baiduMap.getMapStatus(); //然后MapStatus.rotate就可以拿到原来的旋转度数. float rotate = mapStatus.rotate; //通过new MapStatus.Builder得到MapStatus.Builder对象 MapStatus.Builder builder = new MapStatus.Builder(); //用MapStatus.Builder对象.rotate(原来旋转的度数+30); builder.rotate(rotate + 30); //用MapStatus.Builder对象.build,得到MapStatus对象 MapStatus build = builder.build(); //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate MapStatusUpdate newMapStatus = MapStatusUpdateFactory.newMapStatus(build); //map对象.setMapStatus,传入MapStatusUpdate对象 baiduMap.setMapStatus(newMapStatus); break; case R.id.overlook_bt: //俯仰(0 ~ -45),每次在原来的基础上再俯仰-5度 //获取当前地图的状态,map对象.getMapStatus,直接获取到MapStatus MapStatus mapStatus1 = baiduMap.getMapStatus(); //然后MapStatus.overlook就可以拿到原来的俯仰度数. float overlook = mapStatus1.overlook; //通过new MapStatus.Builder得到MapStatus.Builder对象 MapStatus.Builder builder1 = new MapStatus.Builder(); //用MapStatus.Builder对象.overlook(原来俯仰的度数-5); builder1.overlook(overlook - 5); //用MapStatus.Builder对象.build,得到MapStatus对象 MapStatus build1 = builder1.build(); //用使用MapStatusUpdateFactory工厂调用newMapStatus,把MapStatus对象传入.得到MapStatusUpdate