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();
}