高德地图使用心得,百度地图使用心得
来源:互联网 发布:淘宝手机端首页怎么做 编辑:程序博客网 时间:2024/06/05 06:25
1.环境配置
高德开发定位,地图,搜索,加覆盖物,这四个功能只需要要做三部
第一,下载三个架包,高德里面不涉及到3d地图没有.so文件,只需要三个架包,对于我们不需要的功能其他架包可以不用下载,比如不涉及到导航我们就不需要下载导航架包,这样可以减少应用的负重,将下载好的架包导入工程,配上截图!
这是加入项目中截图
导包完成之后然后就是添加服务,首先,请在application标签中声明service组件,每个app拥有自己单独的定位service。<service android:name="com.amap.api.location.APSService"></service>
然后,<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
最后设置Key,在application标签中加入
<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key </meta-data>
2.功能实现
最后就是代码实现我们想要的功能
第一步初始化Amap这个类,这个类是地图对象,里面有很多地图的操作方法和接口
private void init() { if (aMap == null) { aMap = mapView.getMap(); aMap.moveCamera(CameraUpdateFactory.zoomTo(16));//设置地图的缩放比例 setUpMap(); } }
得到地图对象后初始化地图对象的一些属性
private void setUpMap() { // 自定义系统定位小蓝点 MyLocationStyle myLocationStyle = new MyLocationStyle(); myLocationStyle.myLocationIcon(com.amap.api.maps2d.model.BitmapDescriptorFactory .fromResource(R.drawable.biaozhi));// 设置小蓝点的图标 myLocationStyle.strokeColor(Color.WHITE);// 设置圆形的边框颜色 myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色 myLocationStyle.strokeWidth(0.0f);// 设置圆形的边框粗细*/ aMap.setMyLocationStyle(myLocationStyle); aMap.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false*/ } }); }
运行激活定位的接口方法,并且开始定位
/** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mlocationClient == null) { mlocationClient = new AMapLocationClient(this); mLocationOption = new AMapLocationClientOption(); //设置定位监听 mLocationOption.setNeedAddress(true); mLocationOption.setOnceLocation(true); mlocationClient.setLocationListener(this); //设置为高精度定位模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 mlocationClient.startLocation(); } }
开启定位之后定位成功就会回调定位成功接口方法,着这里我们可以获取到我们定位后的城市,经纬度,以及很多
/** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation != null && amapLocation.getErrorCode() == 0) { mListener.onLocationChanged(amapLocation);// 显示系统小蓝点 aMap.addMarker(new com.amap.api.maps2d.model.MarkerOptions() .anchor(0.5f, 0.5f) .icon(com.amap.api.maps2d.model.BitmapDescriptorFactory .fromBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.biaozhi))) .position(new com.amap.api.maps2d.model.LatLng(amapLocation.getLatitude(), amapLocation.getLongitude()))); Log.e("5555",amapLocation.getProvince()+","+amapLocation.getCity()+","+amapLocation.getAddress()+","+amapLocation.getStreet()+","+amapLocation.getAoiName()); city=amapLocation.getCity(); lp=new LatLonPoint(amapLocation.getLatitude(),amapLocation.getLongitude()); poi_Search("");//开始周边搜索 } else { String errText = "定位失败," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo(); Log.e("AmapErr",errText); } } }
租后就是周边搜索代码:
private void poi_Search(String str) { com.amap.api.services.poisearch.PoiSearch.Query mPoiSearchQuery = new com.amap.api.services.poisearch.PoiSearch.Query(str, "",city); mPoiSearchQuery.requireSubPois(true); mPoiSearchQuery.setPageSize(30); mPoiSearchQuery.setPageNum(0); com.amap.api.services.poisearch.PoiSearch poiSearch = new com.amap.api.services.poisearch.PoiSearch(BaiDuMapActivity.this, mPoiSearchQuery); poiSearch.setBound(new com.amap.api.services.poisearch.PoiSearch.SearchBound(lp, 5000, true)); poiSearch.setOnPoiSearchListener(this); poiSearch.searchPOIAsyn(); }
搜索成功后调用回调接口方法,获取我们搜索到的结果
@Override public void onPoiSearched(com.amap.api.services.poisearch.PoiResult poiResult, int i) { poiItems=poiResult.getPois(); listView.setAdapter(new BaiDuListAdapter(BaiDuMapActivity.this,poiItems)); }
最后我们对搜索的结果进行处理。
最后一个功能就是添加覆盖物
aMap.addMarker(new com.amap.api.maps2d.model.MarkerOptions() .anchor(0.5f, 0.5f) .icon(com.amap.api.maps2d.model.BitmapDescriptorFactory .fromBitmap(BitmapFactory.decodeResource( getResources(), R.drawable.biaozhi))) .position(new com.amap.api.maps2d.model.LatLng(latitude, longitude)));
根据经纬度将我们的红色标志添加到地图上,以便用户很好的知道自己当前位置。
3.百度跟高德的区别
1百度2d地图需要添加.so文件而高德不需要
2百度不支持关键字为空的兴趣点搜索而高德可以
- 高德地图使用心得,百度地图使用心得
- 百度地图使用心得
- 高德地图使用心得
- 高德地图基础功能使用心得
- 高德地图的使用心得
- 高德地图基础功能使用心得
- 高德地图API使用心得分享
- 最近使用百度地图的一点心得
- 关于百度地图api的使用心得
- 使用高德地图api常见方法心得(1)
- ios-关于使用高德地图api心得(1)
- 应用高德地图心得
- openLayer3地图的使用心得
- 百度地图API & 高德地图API 使用问题汇总
- 关于百度地图的心得
- GMap.NET地图开发控件使用心得
- Echarts使用心得总结——地图
- 高德地图使用
- Caffe: 运行classify.py时报错 Mean shape incompatible with input shape
- 代理模式(二)
- 【C语言】逆序输出字符串
- br-lan: received packet on eth2.1 with own address as source address
- Dalvik和ART
- 高德地图使用心得,百度地图使用心得
- Android Fragment隐藏显示调用的方法
- Docker教程:Docker镜像导出及迁移
- Linux系统编程-文件打开关闭
- mysql数据库导出.sql文件
- 使用dom4j解析xml格式字符串,获取标签属性和内容
- Xcode 配置
- Android项目如何知晓当前运行的是哪个活动
- Podometer计步器