因为工作的需要,我在做软件的时候用到地图,并且需要从地图中搜索公交、商户等信息,因此选择百度地图。百度地图搜索的poi搜索正好符合我的需求,但是软件完成后发现在软件第一次执行的时候总是出错,百度地图无法返回搜索数据。

经过调试发现百度地图搜索的回调函数未执行,从网上搜索也没有找到结果。

最后试了几种方法总算给做出了了。

首先讲下百度地图的执行吧。

我们的Activity需要继承百度的MapActivity,

在oncreate中初始化。

mapMgr = new BMapManager(this.getApplication()); //新建一个地图管理器

mapMgr.init("百度地图mapkey", null);

super.initMapActivity(mapMgr);

//获取mapView

mv = (MapView) this.findViewById(R.id.bmapsView);

mapCtrl = mv.getController(); //取得mapView的控制

GeoPoint point = new GeoPoint((int)(31.760765*1E6), (int)(117.257397*1E6));

mapCtrl.setCenter(point); //设置地图显示中心点

mapCtrl.setZoom(16); //设置放大等级

然后的直接在百度地图中使用mksearch,我的是失败了。

我便新开了一个线程,在线程中等待一秒钟之后才开始执行百度地图的搜索。感觉可能是因为activity刚开始启动的时候,百度地图的那个方法没有能够运行,所以等待一秒再让其运行。

new Thread(new Runnable() {

@Override

public void run() {

mkSearch = new MKSearch();

MKSearchListener searchListener = new MKSearchListener() {

@Override

public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {

}

@Override

public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetRGCShareUrlResult(String arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetPoiResult(MKPoiResult res, int type, int iError) {

Log.i("maa","调用我吧");

poiInfos = res.getAllPoi();

if(res != null){

jiaotonglist = new ArrayList();

for(int i = 0;i

MKPoiInfo poi = poiInfos.get(i);

String s = poi.name+":"+poi.address;

GeoPoint pt = poi.pt;

int size = s.length();

int x = (int)size/16;

String s1 = "";

String s2 = "";

if(x>0){

for(int j= 0;j

s1 = s.substring(j*16, (j+1)*16);

s2 = s2+s1+"\n";

}

s2 = s2 +s.substring(x*16);

s = s2;

}

Jiaotong jt = new Jiaotong(sxarray[i],s,R.drawable.suolue,pt);

jiaotonglist.add(jt);

}

handler.sendEmptyMessage(1);

//lv.requestFocus();

//lv.requestFocus( View.FOCUS_DOWN);

//刷新地图

Log.i("maa","成功加载:"+searchType);

}

Log.i("maa","已经加载:"+searchType);

}

@Override

public void onGetPoiDetailSearchResult(int arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {

// TODO Auto-generated method stub

}

@Override

public void onGetAddrResult(MKAddrInfo arg0, int arg1) {

// TODO Auto-generated method stub

}

};

mkSearch.init(mapMgr, searchListener);

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

GeoPoint p = new GeoPoint((int)(31.760765*1E6), (int)(117.257397*1E6));

mkSearch.poiSearchNearBy("公交车站", p, 5000);

}

}).start();

然后使用hanlder接收消息,将返回的数据写到界面里面就行了。

我的代码直接是不能运行的,主要跟大家说一下我的思路。

如果你有更好的方法,欢迎交流。

android 调用百度sdk后运行不了,解决android程序中oncreate方法中调用百度地图MKSearchListener接口不执行的问题...相关推荐

  1. Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转)

    Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) 参考文章: (1)Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) (2)https://www. ...

  2. 【BUG记录】在onCreate()方法handler调用方法导致程序闪退

    情景:我的代码里是在onCreate()方法中new Handler(),然后将创建的Handler对象调用方法发送消息,结果程序就闪退了 原因:在界面还没有被渲染完成的时候,是不能使用handler ...

  3. Android 在onCreate()方法中获取控件宽高值为0解决方案

    大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...

  4. android中oncreate方法,Android textView 中 onCreate 方法的改变

    我在main.xml上使用 Layout Editor创建了一个textview名称是textView1. 我想使用一个自定义的字体,所以我在onCreate方法中创建了下面的代码,但是好像不能识别t ...

  5. 导入idea中运行项目 如何解决各种程序包不存在的问题

    导入idea中运行项目 如何解决各种程序包不存在的问题 缺少包--去官网下载! 缺少包----去官网下载! 缺少包------去官网下载! 可是!!! 为什么总有下不完的包??? 因为小编一直运行用e ...

  6. android 百度定位开启后fragment 不显示,解决Android百度地图MapView在ViewPager中Fragment切换黑屏问题...

    百度地图切换界面出现黑屏原因是地图退出释放内存时渲染出现bug导致.因为是百度地图本身内部bug.所以我们无法从本质上去修复这个bug android:id="@ id/dynamics_m ...

  7. Android学习笔记---开发与运行(卸载)第一个ANDROID应用--Helloworld

    开发与运行(卸载)第一个ANDROID应用 1.第一个android程序:HelloWorld   新建:android Project   填写project name,选择安卓平台 2.a.app ...

  8. android5.1和ios差距,Android 5.1和IOS运行流畅度比较Android获胜!

    实践是检验真相的唯一标准,它一直是发布它的人们的教育,所以我一直认为Android不会比ios更加流畅,但是由于我吃了苹果,所以我有了改变了我以前的看法. 它是ip6p,系统是ios8.4,比较And ...

  9. python封装成exe后运行失败_解决Python使用pyinstaller打包生成exe运行提示错误 | kTWO-个人博客...

    最近用python写了个小的桌面程序,在本机上调试的时候,一点问题都没有,在生成exe后也可以正常打开,但是我发给舍友用的时候却突然出现的错误,运行后提示Failed to execute scrip ...

最新文章

  1. 五位工程师亲述:AI技术人才如何快速成长?
  2. Hack Knowledges
  3. 4k视频写入速度要求_为什么视频工作者需要外置硬盘?
  4. connectionString加密
  5. linux-用户-进程-文件的关系
  6. 灰度拉伸python_灰度变换之灰度线性拉伸(算法1)
  7. tornado 重定向404
  8. python滑动手机屏幕_appium+python自动化24-滑动方法封装(swipe)
  9. 解析恶意软件***技术特点
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_11、SpringBoot2.x目录文件结构讲解...
  11. 算法精解 c语言描述 pdf,【2020新书】C语言算法导论,Introducing Algorithms in C,174页pdf...
  12. 微信支付接口 java服务器,JAVA微信支付接口开发——支付(示例代码)
  13. 微信小程序点播音频服务器,微信小程序无法播放本地音频
  14. laravel框架中hasOne和blongTo的用法详解
  15. 显示器ntsc测试软件,显示器色域检测图拉丁版
  16. 【车间调度】基于遗传算法求解车间调度matlab源码
  17. ios无痕埋点_无痕埋点方案探究
  18. 视频播放库Vitamio的使用以及功能扩展
  19. 网页版微信自动群发消息
  20. java split 字符串作为分隔符_Java 字符串分隔 split

热门文章

  1. C语言-附加-给一个数求最大质数(完整代码)
  2. PAT乙级(1037 在霍格沃茨找零钱 )
  3. java 2 图形设计卷i awt_java 2 图形设计卷i:awt
  4. 生产电池要什么计算机技术,锂离子电池生产的几个关键工序讲解
  5. MySQL 5.7 update误操作后数据恢复详解
  6. 这个火热的社区都升级到2.0了,你还不知道它?
  7. 华为AppCube入选Forrester《中国低代码平台市场分析报告》
  8. 【鲲鹏来了】华为云鲲鹏弹性云服务器 KC1一文全掌握(4)
  9. 【华为云技术分享】《跟唐老师学习云网络》— iptables - filter过滤功能
  10. 利用CloudIDE当做简单linux环境,执行简单python工程任务