wenquan125

导航

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

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

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

 

posted on 2012-11-23 19:46  wenquan125  阅读(631)  评论(0)    收藏  举报