poi搜索有三种方式。依据范围和检索词发起范围检索poisearchinbounds。城市poi检索poisearchincity,周边检索poisearchnearby。
下以周边检索为例介绍怎样进行检索并显示覆盖物poioverlay:
public int poisearchnearby(java.lang.string key, geopoint pt,
int radius)
<dl></dl>
<dd>依据中心点、半径与检索词发起周边检索. </dd>
<dd>异步函数,返回结果在mksearchlistener里的ongetpoiresult方法通知</dd>
<dd></dd>
參数:
key - 关键词
<dd>pt - 中心点地理坐标</dd>
<dd>radius - 半径。单位:米</dd>
返回:
<dl><dd></dd></dl>
成功返回0,否则返回-1
demo: 检索天安门周边5000米之内的kfc餐厅
[java] view
plaincopy
mmksearch.poisearchnearby("kfc", new geopoint((int) (39.915 * 1e6), (int) (116.404 * 1e6)), 5000);
实现mysearchlistener的ongetpoiresult,并展示检索结果:
public void ongetpoiresult(mkpoiresult result, int type, int ierror) {
if (result == null) {
return;
}
poioverlay poioverlay = new poioverlay(mymapactivity.this, mmapview);
poioverlay.setdata(result.getallpoi());
mmapview.getoverlays().add(poioverlay);
}
详细实现:
package xiaosi.baidumap;
import android.os.bundle;
import com.baidu.mapapi.bmapmanager;
import com.baidu.mapapi.geopoint;
import com.baidu.mapapi.mkaddrinfo;
import com.baidu.mapapi.mkdrivingrouteresult;
import com.baidu.mapapi.mkpoiresult;
import com.baidu.mapapi.mksearch;
import com.baidu.mapapi.mksearchlistener;
import com.baidu.mapapi.mktransitrouteresult;
import com.baidu.mapapi.mkwalkingrouteresult;
import com.baidu.mapapi.mapactivity;
import com.baidu.mapapi.mapcontroller;
import com.baidu.mapapi.mapview;
import com.baidu.mapapi.poioverlay;
public class baidumapactivity extends mapactivity
{
/** called when the activity is first created. */
private bmapmanager mapmanager = null;
private string key = "1b79478da01f7800aea8602517a6d89b38151105";
private mapview mapview = null;
@override
public void oncreate(bundle savedinstancestate)
{
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
mapmanager = new bmapmanager(getapplication());
mapmanager.init(key, null);
super.initmapactivity(mapmanager);
mapview = (mapview) findviewbyid(r.id.mapsview);
mapview.setbuiltinzoomcontrols(true); // 设置启用内置的缩放控件
mapcontroller mapcontroller = mapview.getcontroller(); // 得到mmapview的控制权,能够用它控制和驱动平移和缩放
mapcontroller.setzoom(12); // 设置地图zoom级别
mksearch mksearch = new mksearch();
mksearch.init(mapmanager, new mysearchlistener());// 注意。mksearchlistener仅仅支持一个。以最后一次设置为准
mksearch.poisearchnearby("kfc", new geopoint((int) (39.915 * 1e6),
(int) (116.404 * 1e6)), 5000);
public class mysearchlistener implements mksearchlistener
public void ongetaddrresult(mkaddrinfo arg0, int arg1)
{}
public void ongetdrivingrouteresult(mkdrivingrouteresult arg0, int arg1)
public void ongetpoiresult(mkpoiresult arg0, int arg1, int arg2)
{
if (arg0 == null) {
return;
}
poioverlay poioverlay = new poioverlay(baidumapactivity.this, mapview);
poioverlay.setdata(arg0.getallpoi());
mapview.getoverlays().add(poioverlay);
}
public void ongettransitrouteresult(mktransitrouteresult arg0, int arg1)
public void ongetwalkingrouteresult(mkwalkingrouteresult arg0, int arg1)
protected boolean isroutedisplayed()
return false;
protected void ondestroy()
if (mapmanager != null)
mapmanager.destroy();
mapmanager = null;
super.ondestroy();
protected void onpause()
mapmanager.stop();
super.onpause();
protected void onresume()
mapmanager.start();
super.onresume();
}