package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; import com.baidu.mapapi.MKPoiInfo; 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.MKPoiResult; import com.baidu.mapapi.MKSearch; import com.baidu.mapapi.MKSuggestionResult; 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; import com.baidu.mapapi.RouteOverlay; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.Toast; public class MainActivity extends MapActivity { private BMapManager mBMapMan = null; private MapView mMapView = null; private MKSearch mMKSearch = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBMapMan=new BMapManager(getApplication()); mBMapMan.init("3B910277809EF23A5FAFAB66F09168D73CB3B793", null); //注意:请在试用setContentView前初始化BMapManager对象,否则会报错 setContentView(R.layout.activity_main); super.initMapActivity(mBMapMan); mMKSearch = new MKSearch(); mMKSearch.init(mBMapMan, new MySearchListener(){ @Override public void onGetAddrResult(MKAddrInfo arg0, int arg1) { // TODO Auto-generated method stub super.onGetAddrResult(arg0, arg1); } @Override public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { // TODO Auto-generated method stub super.onGetBusDetailResult(arg0, arg1); } @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { if (result == null) { return; } RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this, mMapView); // 此处仅展示一个方案作为示例 routeOverlay.setData(result.getPlan(0).getRoute(0)); mMapView.getOverlays().add(routeOverlay); mMapView.refreshDrawableState(); } @Override public void onGetPoiDetailSearchResult(int arg0, int arg1) { // TODO Auto-generated method stub super.onGetPoiDetailSearchResult(arg0, arg1); } @Override public void onGetPoiResult(MKPoiResult res, int type, int error) { // 错误号可参考MKEvent中的定义 if ( error == MKEvent.ERROR_RESULT_NOT_FOUND){ Toast.makeText(MainActivity.this, "抱歉,未找到结果",Toast.LENGTH_LONG).show(); return ; } else if (error != 0 || res == null) { Toast.makeText(MainActivity.this, "搜索出错啦..", Toast.LENGTH_LONG).show(); return; } // 将poi结果显示到地图上 PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mMapView); poiOverlay.setData(res.getAllPoi()); mMapView.getOverlays().clear(); mMapView.getOverlays().add(poiOverlay); mMapView.refreshDrawableState(); //当ePoiType为2(公交线路)或4(地铁线路)时, poi坐标为空 for(MKPoiInfo info : res.getAllPoi() ){ if (info.pt != null ){ mMapView.getController().animateTo(info.pt); break; } } } @Override public void onGetRGCShareUrlResult(String arg0, int arg1) { // TODO Auto-generated method stub super.onGetRGCShareUrlResult(arg0, arg1); } @Override public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { // TODO Auto-generated method stub super.onGetSuggestionResult(arg0, arg1); } @Override public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) { // TODO Auto-generated method stub super.onGetTransitRouteResult(arg0, arg1); } @Override public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) { // TODO Auto-generated method stub super.onGetWalkingRouteResult(arg0, arg1); } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone(); } @Override public boolean equals(Object o) { // TODO Auto-generated method stub return super.equals(o); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); } @Override public int hashCode() { // TODO Auto-generated method stub return super.hashCode(); } @Override public String toString() { // TODO Auto-generated method stub return super.toString(); } });//注意,MKSearchListener只支持一个,以最后一次设置为准 mMapView=(MapView)findViewById(R.id.bmapView); mMapView.setBuiltInZoomControls(true); //设置启用内置的缩放控件 MapController mMapController=mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放 GeoPoint point =new GeoPoint((int)(39.915* 1E6),(int)(116.404* 1E6)); //用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point);//设置地图中心点 mMapController.setZoom(12);//设置地图zoom级别 //显示交通信息图 //mMapView.setTraffic(true); //显示卫星图 //mMapView.setSatellite(true); //检索北京西站与北京北站为顶点所确定的距形区域内的KFC餐厅 // 北京西站 GeoPoint ptLB = new GeoPoint( (int)(39.901375 * 1E6),(int)(116.329099 * 1E6)); // 北京北站 GeoPoint ptRT = new GeoPoint( (int)(39.949404 * 1E6),(int)(116.360719 * 1E6)); mMKSearch.poiSearchInbounds("KFC", ptLB, ptRT); //检索从天安门到百度大厦的驾车路线 MKPlanNode start = new MKPlanNode(); start.pt = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)); MKPlanNode end = new MKPlanNode(); end.pt = new GeoPoint(40057031, 116307852);// 设置驾车路线搜索策略,时间优先、费用最少或距离最短 mMKSearch.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST); mMKSearch.drivingSearch(null, start, null, end); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onDestroy(){ if(mBMapMan!=null){ mBMapMan.destroy(); mBMapMan=null; } super.onDestroy(); } @Override protected void onPause(){ if(mBMapMan!=null){ mBMapMan.stop(); } super.onPause(); } @Override protected void onResume(){ if(mBMapMan!=null){ mBMapMan.start(); } super.onResume(); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步