百度地图之四如何根据范围和检索词发起范围检索

此内容根据老罗视频整理:
在实际开发中我们需要检索某一个建筑物周边的对象

  MKSearch类:用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索等
  busLneSearch():公交路线详细信息检索,异步函数,返回结果在MKSearchListener里的OnGetBusDetailResult方法通知
  drivingSearch():驾车路线搜索
  poiSearchInCity():城市检索
  transitSearch():公交路线检索
  walkingSearch():步行路线检索
实战案例:检索天安门周边5000米之内的KFC餐厅

import com.android.android_baidu_mypoioverlay.R; 

import com.baidu.mapapi.BMapManager; 

import com.baidu.mapapi.GeoPoint; 

import com.baidu.mapapi.MKAddrInfo; 

import com.baidu.mapapi.MKBusLineResult; 

import com.baidu.mapapi.MKDrivingRouteResult; 

import com.baidu.mapapi.MKGeneralListener; 

import com.baidu.mapapi.MKPoiResult; 

import com.baidu.mapapi.MKSearch; 

import com.baidu.mapapi.MKSearchListener; 

import com.baidu.mapapi.MKSuggestionResult; 

import com.baidu.mapapi.MKTransitRouteResult; 

import com.baidu.mapapi.MKWalkingRouteResult; 

import com.baidu.mapapi.MapActivity; 

import com.baidu.mapapi.MapView; 

import com.baidu.mapapi.PoiOverlay; 

  

import android.os.Bundle; 

import android.widget.Toast; 

  

public class MainActivity extends MapActivity { 

  

// 添加百度地图的相关控件 

private MapView mapView; 

// 加载地图的引擎 

private BMapManager bMapManager; 

// 百度地图的key 

private String KeyString = "8C426377B3526B6BF3672C9BA3BB544D1E8289CD"; 

// 用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索等 

private MKSearch mkSearch; 

  

@Override

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 

mapView = (MapView) this.findViewById(R.id.bmapView); 

bMapManager = new BMapManager(MainActivity.this); 

// 必须要加载key 

bMapManager.init(KeyString, new MKGeneralListener() { 

  

public void onGetPermissionState(int arg0) { 

if (arg0 == 300) { 

Toast.makeText(MainActivity.this, "输入的key有错,请核实!!", 1).show(); 

} 

} 

  

public void onGetNetworkState(int arg0) { 

  

} 

}); 

this.initMapActivity(bMapManager); 

mkSearch = new MKSearch(); 

mkSearch.init(bMapManager, new MySearchListener()); 

/** 

* 根据某个中心点,半径与检索词发起周边检索, key: 关键词 pt:中心点地理坐标 radius:半径,单位:米 

*/

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

// TODO Auto-generated method stub 

  

} 

  

public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

  

public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

  

public void onGetPoiResult(MKPoiResult result, int type, int iError) { 

// TODO Auto-generated method stub 

if (result == null) { 

return; 

} 

// 构建的一个查询点 

PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView); 

poiOverlay.setData(result.getAllPoi());// 获得所有符合条件的点 

mapView.getOverlays().add(poiOverlay); 

mapView.invalidate();// 刷新地图 

} 

  

public void onGetRGCShareUrlResult(String arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

  

public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

  

public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

  

public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { 

// TODO Auto-generated method stub 

  

} 

} 

  

@Override

protected void onDestroy() { 

super.onDestroy(); 

if (bMapManager != null) { 

bMapManager.destroy(); 

bMapManager = null; 

} 

} 

  

@Override

protected void onResume() { 

super.onResume(); 

if (bMapManager != null) { 

bMapManager.start(); 

} 

} 

  

@Override

protected void onPause() { 

super.onPause(); 

if (bMapManager != null) { 

bMapManager.stop(); 

} 

} 

  

@Override

protected boolean isRouteDisplayed() { 

return false; 

} 

  

}

 

你可能感兴趣的:(百度地图)