标签: Android百度地图
2016-09-02 11:29 1283人阅读 收藏 举报
本来想学习一下Andriod Wear的开发,但是买不起Wear啊!直接跳过,开始学习周边雷达地图部分!这个功能非常有用,能知道你周围和你使用相同软件的人,牛郎织女一人安装一个,再也不用去鹊桥相会了,随时都能知道对方在哪里,可是怎么多出来那么多牛郎织女!
第一步【注册周边雷达】
要使用此功能,需要对你的想用周边雷达功能的App进行注册,相当于绑定,而且可以绑定多个!周边雷达注册
第二步【上传位置,检索周边】
上传有上传一次和自动时间间隔上传,检索可以查看周边使用此App的人,里面可以填入检索的页数,人数和范围!
第三步【清除用户数据】
最后如果不想再被查看,当然是可以清除你的位置信息的!
感觉很简单,其实各种坑等着你呢!看代码:
- package cq.cake.chwl.ui;
-
- import android.os.Bundle;
- import android.view.Menu;
- import android.view.MenuItem;
-
- import com.baidu.mapapi.model.LatLng;
- import com.baidu.mapapi.radar.RadarNearbyResult;
- import com.baidu.mapapi.radar.RadarNearbySearchOption;
- import com.baidu.mapapi.radar.RadarSearchError;
- import com.baidu.mapapi.radar.RadarSearchListener;
- import com.baidu.mapapi.radar.RadarSearchManager;
- import com.baidu.mapapi.radar.RadarUploadInfo;
- import com.baidu.mapapi.radar.RadarUploadInfoCallback;
-
- import cq.cake.base.BaseToolbarMapActivity;
- import cq.cake.chwl.R;
- import cq.cake.util.L;
- import cq.cake.util.T;
-
-
-
-
-
-
-
- public class RabarActivity extends BaseToolbarMapActivity implements RadarSearchListener, RadarUploadInfoCallback {
- RadarSearchManager mManager;
- String userID = "100";
- LatLng pt = new LatLng(106.465712,29.562483);
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_rabar);
- init();
-
- }
-
- private void init() {
-
- mManager = RadarSearchManager.getInstance();
-
- mManager.addNearbyInfoListener(this);
-
- mManager.setUserID(userID);
-
- }
-
-
-
-
-
-
-
-
- private boolean upMyAddr() {
-
-
-
- RadarUploadInfo info = new RadarUploadInfo();
- info.comments = "SmallCake";
- info.pt = pt;
- return mManager.uploadInfoRequest(info);
- }
-
-
-
- private void autoUpMyAddr() {
-
- mManager.startUploadAuto(this, 5000);
-
- }
-
-
-
- private void closeUptoUpMyAddr() {
-
- mManager.stopUploadAuto();
- }
-
-
-
-
- private void nearBySearch(){
-
-
- RadarNearbySearchOption option = new RadarNearbySearchOption().centerPt(pt).pageNum(0).pageCapacity(50).radius(2000);
-
- mManager.nearbyInfoRequest(option);
- }
-
-
-
- private void clearUserInfo(){
- mManager.clearUserInfo();
- }
-
-
-
-
-
-
-
- @Override
- public void onGetUploadState(RadarSearchError radarSearchError) {
- L.i("单次上传我的位置onGetUploadState");
-
- if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) {
-
- L.i("上传位置成功");
- T.showLong(RabarActivity.this, "上传位置成功");
- } else {
-
- L.i("上传位置失败");
- T.showLong(RabarActivity.this, "单次上传位置失败");
- }
- }
-
-
-
-
-
-
-
- @Override
- public RadarUploadInfo onUploadInfoCallback() {
-
-
- RadarUploadInfo info = new RadarUploadInfo();
- info.comments = "SmallCake0";
- info.pt = pt;
- return info;
- }
-
-
-
-
-
-
- @Override
- public void onGetNearbyInfoList(RadarNearbyResult radarNearbyResult, RadarSearchError radarSearchError) {
- L.i("查询周边信息=="+radarSearchError+" 数据是否为空:"+(radarNearbyResult==null));
- switch (radarSearchError){
- case RADAR_NO_ERROR:
- T.showLong(RabarActivity.this, "查询周边成功");
- break;
- case RADAR_NO_RESULT:
- T.showLong(RabarActivity.this, "没有使用此App的人员");
- break;
- default:
- T.showLong(RabarActivity.this, "失败了!");
- break;
- }
- }
-
-
-
-
-
- @Override
- public void onGetClearInfoState(RadarSearchError radarSearchError) {
-
- if (radarSearchError == RadarSearchError.RADAR_NO_ERROR) {
-
- T.showLong(RabarActivity.this, "清除位置成功");
- } else {
-
- T.showLong(RabarActivity.this, "清除位置失败");
- }
- }
-
-
-
-
-
- private void clearAll(){
-
- mManager.removeNearbyInfoListener(this);
-
- mManager.clearUserInfo();
-
- mManager.destroy();
- mManager = null;
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- clearAll();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.menu_rabar,menu);
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int itemId = item.getItemId();
- switch (itemId){
- case R.id.menu1:
- upMyAddr();
- break;
- case R.id.menu2:
- autoUpMyAddr();
- break;
- case R.id.menu3:
- closeUptoUpMyAddr();
- break;
- case R.id.menu4:
- nearBySearch();
- break;
- case R.id.menu5:
- clearUserInfo();
- break;
- }
- return super.onOptionsItemSelected(item);
- }
-
- }
使用遇到的坑:
1.最开始我没有mManager.setUserId();回调毫无反应!官网不是说可以为空,默认是设备标识吗!我就没有设置,好吧,我理解错了。
没有你也得设置个null,这样mManager.setUserId(null);
2.info.comments有长度获取其他限制,如果上次失败你就多试试吧。官网你给我说,你又坑我。
3.要想检索必须先上传自己的位置,我能说还有没有隐私了,偷偷写死自己位置!
最后,我还是没有检索出来范围的人,哪怕我自己也好啊!可以反馈的是没有错误,但是也没有结果!RADAR_NO_RESULT,想想你尝试很多次很多方法都是得到RADAR_NO_RESULT,我不得不开心的笑了!