天天看點

android POI搜尋,附近搜尋,周邊搜尋定位介紹

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

android POI搜尋,附近搜尋,周邊搜尋定位介紹

實作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();  

}