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; } }
百度地图--poi搜索
最新推荐文章于 2021-05-26 02:39:01 发布