一 申请百度API key
百度地图API:
百度地图开发者平台地址: 。点击界面的“申请密钥”,进入界面之后,点击“创建应用”按钮,我这里已经申请过,所以不需要再申请,直接创建应用即可。
Android Studio 获取调试版SHA1,如下:如果想生成release版的参照
1. 输入命令 C: 进入C盘;
2. 输入命令 cd Users\你的用户名\.android 就找到了.android;
3. 输入命令 keytool -list -v -keystore debug.keystore 回车键;
4. 输入密钥库口令 android 回车键,就可以看到调试版SHA1啦!
二 下载SDK
SDK下载地址:
第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,及so文件如下图所示,全部丢进去即可
第二步:导入jar包。菜单栏选择File->Project Structor->Modules->Dependencies,点击+号,选择File dependency,选择jar包导入。通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。三 代码部分
3.1 配置权限和Key
3.2 在布局xml文件中添加地图控件
3.3 在应用程序创建时初始化SDK引用的Context全局变量
@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); }
3.4 执行结果
gitHub:
四 进阶训练
添加百度地图查询功能
4.1 通过中文名称转换成经纬度
/* *根据地址得到地理坐标 */ public void getLatAndLngByAddress() { String addr = ""; String lat = ""; String lng = ""; try { addr = java.net.URLEncoder.encode(address, "UTF-8");//编码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String url = String.format("http://api.map.baidu.com/geocoder/v2/?" + "address=%s&ak=生成的ak&mcode=生成的安全码&output=json", addr); Log.d("panzqww", "-----url = " + url); URL myURL = null; URLConnection httpsConn = null; String[] location = null; //进行转码 try { myURL = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } try { httpsConn = (URLConnection) myURL.openConnection();//建立连接 if (httpsConn != null) { InputStreamReader insr = new InputStreamReader(//传输数据 httpsConn.getInputStream(), "UTF-8"); BufferedReader br = new BufferedReader(insr); String data = null; if ((data = br.readLine()) != null) { System.out.println(data); location = getLocation(data); } insr.close(); br.close(); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } if (location == null || location.length < 2) { return; } this.Latitude = Double.parseDouble(location[0]); this.Longitude = Double.parseDouble(location[1]); }
ak及安全码获取方式:点击设置进入到配置应用中
其中对应的ak为:
安全码是:
AddressToLatitudeLongitude at = new AddressToLatitudeLongitude("江西省樟树市");at.getLatAndLngByAddress();getLocationByLL(at.getLatitude(), at.getLongitude());
/* *根据经纬度前往 */ public void getLocationByLL(double la, double lg) { //地理坐标的数据结构 LatLng latLng = new LatLng(la, lg); //描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng); myBaiduMap.setMapStatus(msu); }
4.2 根据经纬度定位地址
/* *根据经纬度前往 */ public void getLocationByLL(double la, double lg) { //地理坐标的数据结构 LatLng latLng = new LatLng(la, lg); //描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng); myBaiduMap.setMapStatus(msu); }
代码地址 github: