百度地图--poi搜索

BaiduMap mBaidumap;
PoiSearch mPoiSearch = null;
LatLng mCenterlLatLng = null;
private double lng;
private double lat;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            SDKInitializer.initialize(getApplicationContext());
        } catch (Exception e) {
            // TODO: handle exception
            ToastUtils.shortToast(getApplicationContext(), "地图api初始化失败");
            return;
        }
        setContentView(R.layout.activity_yi_yuan_map);
        initSystemBar(this);
        initTitle();
        lng = Constant.lng;
        lat = Constant.lat;
        if (lat!=0&&lng!=0){
            mCenterlLatLng=new LatLng(lat, lng);
        }else {
            Toast.makeText(this,"定位失败",Toast.LENGTH_LONG).show();
        }
        // 初始化搜索模块,注册搜索事件监听
        mPoiSearch = PoiSearch.newInstance();
        mPoiSearch.setOnGetPoiSearchResultListener(this);
//        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaidumap = ((SupportMapFragment) (getSupportFragmentManager()
                .findFragmentById(R.id.map))).getBaiduMap();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.currentThread().sleep(5000);//阻断2                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption().keyword("医院").sortType(PoiSortType.distance_from_near_to_far).location(mCenterlLatLng)
                .radius(500).pageNum(0);
        mPoiSearch.searchNearby(nearbySearchOption);
    }
@Override
protected void onDestroy() {
    mPoiSearch.destroy();
    super.onDestroy();
}

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onPause() {
    super.onPause();
}

@Override
public void onGetPoiResult(PoiResult result) {
    if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
        Toast.makeText(YiYuanMapActivity.this, "未找到结果", Toast.LENGTH_LONG)
                .show();
        return;
    }
    if (result.error == SearchResult.ERRORNO.NO_ERROR) {
        mBaidumap.clear();
        PoiOverlay overlay = new MyPoiOverlay(mBaidumap);
        mBaidumap.setOnMarkerClickListener(overlay);
        overlay.setData(result);
        overlay.addToMap();
        overlay.zoomToSpan();
        BitmapDescriptor centerBitmap = BitmapDescriptorFactory
                .fromResource(R.drawable.icon_geo);
        MarkerOptions ooMarker = new MarkerOptions().position(mCenterlLatLng).icon(centerBitmap);
        mBaidumap.addOverlay(ooMarker);


        return;
    }
    if (result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD) {

        // 当输入关键字在本市没有找到,但在其他城市找到时,返回包含该关键字信息的城市列表
        String strInfo = "";
        for (CityInfo cityInfo : result.getSuggestCityList()) {
            strInfo += cityInfo.city;
            strInfo += ",";
        }
        strInfo += "找到结果";
        Toast.makeText(YiYuanMapActivity.this, strInfo, Toast.LENGTH_LONG)
                .show();
    }
}

@Override
public void onGetPoiDetailResult(PoiDetailResult result) {
    if (result.error != SearchResult.ERRORNO.NO_ERROR) {
        Toast.makeText(YiYuanMapActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT)
                .show();
    } else {
        Toast.makeText(YiYuanMapActivity.this, result.getName() + ": " + result.getAddress(), Toast.LENGTH_SHORT)
                .show();
    }
}

@Override
public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

private class MyPoiOverlay extends PoiOverlay {
    public MyPoiOverlay(BaiduMap arg0) {
        super(arg0);
    }

    @Override
    public boolean onPoiClick(int arg0) {
        super.onPoiClick(arg0);
        PoiInfo poiInfo = getPoiResult().getAllPoi().get(arg0);
        // 检索poi详细信息
        mPoiSearch.searchPoiDetail(new PoiDetailSearchOption()
                .poiUid(poiInfo.uid));
        return true;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值