天天看点

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

}