百度地图

来源:互联网 发布:快手伴奏软件下载 编辑:程序博客网 时间:2024/04/30 21:03
package com.dzl.activity;import android.graphics.drawable.Drawable;import android.os.Bundle;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.MKLocationManager;import com.baidu.mapapi.MKPlanNode;import com.baidu.mapapi.MKSearch;import com.baidu.mapapi.MapActivity;import com.baidu.mapapi.MapController;import com.baidu.mapapi.MapView;import com.baidu.mapapi.MyLocationOverlay;public class MainActivity extends MapActivity {    /** Called when the activity is first created. */BMapManager mBMapMan = null;String key="5EDD398014B693BE1EC43A85302762033E79093B";MapView mMapView;MKLocationManager mLocationManager;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        mBMapMan = new BMapManager(getApplication());        mBMapMan.init(key, null);        super.initMapActivity(mBMapMan);        mMapView = (MapView)findViewById(R.id.bmapView);        mMapView.setTraffic(true);// 设置交通模式   //    mMapView.setSatellite(true);//卫星模式                mMapView.setBuiltInZoomControls(true);//是否启用内置的缩放控件        MapController mMapController = mMapView.getController();        GeoPoint point = new GeoPoint((int)(30.6037 * 1E6), (int)(114.29347 * 1E6));//给定一个点        mMapController.setCenter(point);//将这个点作为地图的中心点        mMapController.setZoom(12);//设置地图的room级别        mMapView.getOverlays().add(new MyOverlay(mMapView));//添加覆盖物                    /**         * 添加标记         */        //初始化Location模块        mLocationManager = mBMapMan.getLocationManager();        //通过enableProvider和disableProvider方法选择定位的provider    //    mLocationManager.enableProvider(MKLocationManager.MK_NETWORK_PROVIDER);        mLocationManager.disableProvider(MKLocationManager.MK_COORDINATE_WGS84);        //添加定位图        MyLocationOverlay mylocTest = new MyLocationOverlay(this,mMapView);        mylocTest.enableMyLocation();//启用定位        mylocTest.enableCompass();//启用指南针        mMapView.getOverlays().add(mylocTest);                /**         * @author Administrator         * @添加MapView覆盖物中         */                Drawable marker = getResources().getDrawable(R.drawable.iconmarka);        mMapView.getOverlays().add(new OverItemI(marker,this));//添加ItemizedOverlay到mMapView中                //清除所有覆盖物        //  mMapView.getOverlays().clear();                /**         *          * 搜索服务         *           */        MKSearch mMKSearch = new MKSearch();        mMKSearch.init(mBMapMan,new MySearchListener(MainActivity.this,mMapView));//MySearchListener只支持一个,以最后设置的为准                /**         * POI搜索有三种方式,根据范围和检索词发起         * 范围检索poiSearchInBounds,         * 城市检索poiSearchInCity,         * 周边检索poiSearchNearBy,         *          */            //检索天安门周边5000米之内的KFC餐厅        mMKSearch.poiSearchNearBy("KFC", new GeoPoint((int)(39.915 * 1E6),(int)(116.404 * 1E6)), 5000);                /**         * 检索从天安门到百度大厦的驾车路线         *          */        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.drivingSearch(null, start, null, end);                /**         * 步行路线图检索         *           */        MKPlanNode walk_start = new MKPlanNode();        walk_start.pt = new GeoPoint((int)(39.915 * 1E6),(int)(116.404 * 1E6));//天安门的经纬度        MKPlanNode walk_end = new MKPlanNode();        walk_start.pt = new GeoPoint(40057031,116307852);//百度大厦的经纬度        mMKSearch.walkingSearch(null, walk_start, null, walk_end);                /**         * 公交换乘路线搜索 TransitOverlay         *          */         MKPlanNode transit_start = new MKPlanNode();        transit_start.pt = new GeoPoint((int)(39.915 * 1E6),(int)(116.404 * 1E6));//天安门的经纬度         MKPlanNode transit = new MKPlanNode();         transit_start.pt = new GeoPoint(40057031,116307852);//百度大厦的经纬度          //设置乘车线搜索策略,时间优先,最少换乘,最少步行距离或不含地铁         mMKSearch.setTransitPolicy(MKSearch.EBUS_TIME_FIRST);         mMKSearch.transitSearch("北京", start, end);//必须设置地市名                           /*          * 公交路线详情搜索          */         mMKSearch.poiSearchInCity("武汉", "724");                      }   @Overrideprotected void onDestroy() {// TODO Auto-generated method stub   if(mBMapMan!=null)   {   mBMapMan.destroy();   mBMapMan =null;   }super.onDestroy();}      @Overrideprotected void onPause() {// TODO Auto-generated method stub   if(mBMapMan!=null)   {   mBMapMan.stop();   }super.onPause();}    @Overrideprotected void onResume() {// TODO Auto-generated method stubif(mBMapMan!=null){mBMapMan.start();}super.onResume();}@Overrideprotected boolean isRouteDisplayed() {// TODO Auto-generated method stubreturn false;}}
package com.dzl.activity;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Point;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.MapView;import com.baidu.mapapi.Overlay;/* * 覆盖物抽象类,添加文字 *  */public class MyOverlay extends Overlay {MapView mMapView;public MyOverlay(MapView mMapView){this.mMapView = mMapView;}    GeoPoint geoPoint = new GeoPoint((int)(30.6037 * 1E6), (int)(114.29347 * 1E6));//给定一个点    Paint paint = new Paint();        @Override    public void draw(Canvas canvas, MapView mapView, boolean shadow) {    // TODO Auto-generated method stub    Point point = mMapView.getProjection().toPixels(geoPoint,null);    canvas.drawText("♥这里是三阳路!",point.x,point.y,paint);    }}

package com.dzl.activity;import android.app.Activity;import com.baidu.mapapi.MKAddrInfo;import com.baidu.mapapi.MKBusLineResult;import com.baidu.mapapi.MKDrivingRouteResult;import com.baidu.mapapi.MKPoiResult;import com.baidu.mapapi.MKSearchListener;import com.baidu.mapapi.MKSuggestionResult;import com.baidu.mapapi.MKTransitRouteResult;import com.baidu.mapapi.MKWalkingRouteResult;import com.baidu.mapapi.MapView;import com.baidu.mapapi.PoiOverlay;import com.baidu.mapapi.RouteOverlay;import com.baidu.mapapi.TransitOverlay;public class MySearchListener implements MKSearchListener{Activity context;MapView mapView;//构造函数public MySearchListener(Activity context,MapView mapView){this.context = context;this.mapView = mapView;}@Overridepublic void onGetAddrResult(MKAddrInfo arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {// TODO Auto-generated method stub}/** * 现实驾车路线 */@Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) {// TODO Auto-generated method stubif(result == null){return;}RouteOverlay routeOverlay = new RouteOverlay(context,mapView);routeOverlay.setData(result.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);}/* * 监听查找周边的地点,例如查找天安门周围5000米内的所有KFC餐厅 *  *///现示检索结果@Overridepublic void onGetPoiResult(MKPoiResult result, int type, int iError) {// TODO Auto-generated method stubif(result == null){return;}PoiOverlay poioverlay = new PoiOverlay(context,mapView);poioverlay.setData(result.getAllPoi());mapView.getOverlays().add(poioverlay);mapView.invalidate();//刷新地图}@Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {// TODO Auto-generated method stub}/* *  * 公交车路线 * @see com.baidu.mapapi.MKSearchListener#onGetTransitRouteResult(com.baidu.mapapi.MKTransitRouteResult, int) */@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult result, int iError) {// TODO Auto-generated method stubif(result == null){return;}TransitOverlay transitOverlay = new TransitOverlay(context,mapView);transitOverlay.setData(result.getPlan(0));mapView.getOverlays().add(transitOverlay);mapView.invalidate();}/* * 步行路线图搜索 * @see com.baidu.mapapi.MKSearchListener#onGetWalkingRouteResult(com.baidu.mapapi.MKWalkingRouteResult, int) */@Overridepublic void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) {// TODO Auto-generated method stubif(result == null){return;}RouteOverlay routeOverlay = new RouteOverlay(context,mapView);routeOverlay.setData(result.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);}}

package com.dzl.activity;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.graphics.drawable.Drawable;import android.widget.Toast;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.ItemizedOverlay;import com.baidu.mapapi.OverlayItem;public class OverItemI extends ItemizedOverlay<OverlayItem>{/** * @author Administrator * @deprecated 分条目覆盖物,定义三个经纬度点,然后在上面插图标 * @param arg0 */private  List<OverlayItem> GeoList = new ArrayList<OverlayItem>();private  Context mContext;private double mLat1 = 39.90823;//纬度private double mLon1 = 116.397428;//经度private double mLat2 = 39.9022;private double mLon2 = 116.3922;private double mLat3 = 39.917723;private double mLon3 = 116.3722;//构造函数public OverItemI(Drawable marker,Context context){super(boundCenterBottom(marker));this.mContext = context;//用给定的经纬度构造GeoPoint,单位是微度(度 * 1E6)GeoPoint p1 = new GeoPoint((int)(mLat1 * 1E6),(int)(mLon1 * 1E6));GeoPoint p2 = new GeoPoint((int)(mLat2 * 1E6),(int)(mLon2 * 1E6));GeoPoint p3 = new GeoPoint((int)(mLat3 * 1E6),(int)(mLon3 * 1E6));GeoList.add(new OverlayItem(p1,"p1","point1"));GeoList.add(new OverlayItem(p2,"p2","point2"));GeoList.add(new OverlayItem(p3,"p3","point3"));populate();}public OverItemI(Drawable arg0) {super(arg0);// TODO Auto-generated constructor stub}@Overrideprotected OverlayItem createItem(int i) {// TODO Auto-generated method stubreturn GeoList.get(i);}@Overridepublic int size() {// TODO Auto-generated method stubreturn GeoList.size();}//处理点击事件protected boolean onTap(int i){Toast.makeText(this.mContext, GeoList.get(i).getSnippet(), Toast.LENGTH_SHORT).show();return true;}}