高德地图使用心得,百度地图使用心得

来源:互联网 发布:淘宝手机端首页怎么做 编辑:程序博客网 时间: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百度不支持关键字为空的兴趣点搜索而高德可以

1 0
原创粉丝点击