newlist

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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;
    }





    

}

 

posted on 2013-09-08 16:21  一枚程序  阅读(2728)  评论(0编辑  收藏  举报