首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

006 走下移动开发之安卓项目实战(百度map:怎么进行经纬度转换)

2013-03-21 
006 走上移动开发之安卓项目实战(百度地图:如何进行经纬度转换)还请大家注意在文章进行转载的时候麻烦注明

006 走上移动开发之安卓项目实战(百度地图:如何进行经纬度转换)

还请大家注意在文章进行转载的时候麻烦注明出处

《http://blog.csdn.net/shuaiyinoo》谢谢

今天是百度地图的最后一个博客的更新了,看了上面几篇博客不知道大家有没有感受或者有没有什么体会,基本上百度地图提供的查询的方法基本上都是异步调用的,通过异步调用显示在  MySearchListener implements MKSearchListener  实现了这个接口的各个方法当中


当然这次的经纬度查询和转换同样是在这里面有所体会,在进行经纬度转换的时候,只需要调用百度地图的下面两个方法,就可以成功的知道如何进行经纬度的转换了

006 走下移动开发之安卓项目实战(百度map:怎么进行经纬度转换)


总得来说百度地图做起来比Google地图的API做起来简单,原因可能就是应为百度地图的API是中文的,中国人开发的更加适合中国人的使用习惯等等,加油,成功是所于大家的,下面我就把这一几篇博客的核心代码贴出来,供大家参考参考


然后附上这几个博客的总体的项目,请大家笑纳......有很多不足的地方还请大家多多包含......

--->>>飞机直达源代码下载地


package com.shuaiyin.baidu;import java.util.ArrayList;import java.util.List;import android.content.Context; import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Point;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.widget.Toast;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.GeoPoint;import com.baidu.mapapi.ItemizedOverlay;import com.baidu.mapapi.MKAddrInfo;import com.baidu.mapapi.MKBusLineResult;import com.baidu.mapapi.MKDrivingRouteResult;import com.baidu.mapapi.MKGeneralListener;import com.baidu.mapapi.MKPlanNode;import com.baidu.mapapi.MKPoiInfo;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.MapController;import com.baidu.mapapi.MapView;import com.baidu.mapapi.Overlay;import com.baidu.mapapi.OverlayItem;import com.baidu.mapapi.RouteOverlay;import com.baidu.mapapi.TransitOverlay;/** * 让百度地图继承MapActivity * @author shuaiyin * */public class BaiDu_SuYiActivity extends MapActivity {//添加百度地图的相关控件private MapView mapView;//加载百度地图的引起private BMapManager bMapManager;//定义百度地图的KEYprivate String key = "3DA88729DD94B0429A4BEE30797E04D91B0211C4";//在百度地图上添加相应的控件private MapController mapController;//定义搜索对象private MKSearch mkSearch ;//定义一个起点private MKPlanNode start;//定义一个终点private MKPlanNode end;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //首先实例化mapView        mapView = (MapView) this.findViewById(R.id.bmapView);        bMapManager = new BMapManager(BaiDu_SuYiActivity.this);        //调用百度地图加载KEY        bMapManager.init(key, new MKGeneralListener() {@Overridepublic void onGetPermissionState(int arg0) {if(arg0 == 300){Toast.makeText(BaiDu_SuYiActivity.this, "您输入的KEY有问题,请核实", 2).show();}}@Overridepublic void onGetNetworkState(int arg0) {}});                this.initMapActivity(bMapManager);        //表示可以设置缩放功能        mapView.setBuiltInZoomControls(true);        mapController = mapView.getController();                //V1.00        //在百度地图上标注一个中心点        //GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));        //给地图对象设置一个中心点        //mapController.setCenter(geoPoint);        //设置地图的缩放级别        //mapController.setZoom(12);        //显示交通地图        //mapView.setTraffic(true);        //显示卫星地图        //mapView.setSatellite(true);                //v2.00        //给地图对象设置标注物        //mapView.getOverlays().add(new MyOverlay());        //mapController.setZoom(12);                //v3.00        //给地图设置多个标注物        //显示标注的图标        //Drawable drawable = getResources().getDrawable(R.drawable.iconmarka);        //mapView.getOverlays().add(new MyOverLayItem(drawable));                //v4.00        //mapController.setZoom(14);        //在地图范围内实现对物体的搜索        //mkSearch = new MKSearch();        //mkSearch.init(bMapManager, new MySearchListener());        //这个方法表示根据中心点搜索周边的内容        //mkSearch.poiSearchNearBy("厕所", new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)), 5000);                //v5.00驾车路线的搜索    //mapController.setZoom(14);    //在地图范围内实现对物体的搜索    //mkSearch = new MKSearch();    //mkSearch.init(bMapManager, new MySearchListener());    //给定第一个坐标    //start = new MKPlanNode();    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));    //给定第二个坐标    //end = new MKPlanNode();    //end.pt = new GeoPoint(40057031,116307852);    //路线的优先顺序    //mkSearch.setDrivingPolicy(MKSearch.EBUS_TIME_FIRST);    //调用路线的回调方法    //mkSearch.drivingSearch(null, start, null, end);                //6.0行走路线的搜索        //mapController.setZoom(12);        //在地图范围内实现对物体的搜索    //mkSearch = new MKSearch();    //mkSearch.init(bMapManager, new MySearchListener());    //给定第一个坐标    //start = new MKPlanNode();    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));    //给定第二个坐标    //end = new MKPlanNode();    //end.pt = new GeoPoint(40057031,116307852);    //设置回调的行走路线的方法    //mkSearch.walkingSearch(null, start, null, end);                //7.0公交换乘路线的搜索        //mapController.setZoom(12);        //在地图范围内实现对物体的搜索    //mkSearch = new MKSearch();    //mkSearch.init(bMapManager, new MySearchListener());    //给定第一个坐标    //start = new MKPlanNode();    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));    //给定第二个坐标    //end = new MKPlanNode();    //end.pt = new GeoPoint(40057031,116307852);    //设置回调的行走路线的方法    //mkSearch.transitSearch("北京", start, end);             //8.0公交详细路线的搜索        //mapController.setZoom(12);        //在地图范围内实现对物体的搜索    //mkSearch = new MKSearch();    //mkSearch.init(bMapManager, new MySearchListener());    //设置回调的行走路线的方法    //mkSearch.poiSearchInCity("北京", "300");                //v9.00驾车路线多条搜索    mapController.setZoom(14);    //在地图范围内实现对物体的搜索    mkSearch = new MKSearch();    mkSearch.init(bMapManager, new MySearchListener());    //给定第一个坐标    start = new MKPlanNode();    start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));    //给定第二个坐标    end = new MKPlanNode();    end.pt = new GeoPoint(40057031,116307852);    //调用路线的回调方法    mkSearch.transitSearch("北京", start, end);    }        //搜索对象的实现    public class MySearchListener implements MKSearchListener{        //根据名称获取经纬度@Overridepublic void onGetAddrResult(MKAddrInfo res, int error) {if(error != 0){Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();return;}mapView.getController().animateTo(res.geoPt);String msg = String.valueOf(res.geoPt.getLatitudeE6()/1E6)+String.valueOf(res.geoPt.getLongitudeE6()/1E6);Drawable drawable = getResources().getDrawable(R.drawable.iconmarka);mapView.getOverlays().clear();}@Overridepublic void onGetBusDetailResult(MKBusLineResult result, int type) {if(result == null||type != 0){Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();return;}RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);routeOverlay.setData(result.getBusRoute());//清空所有的公交信息mapView.getOverlays().clear();mapView.getOverlays().add(routeOverlay);mapView.invalidate();mapView.getController().animateTo(result.getBusRoute().getStart());}@Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult result, int type) {//对调用的搜索方法进行回调响应if(result == null){return;}RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);//里面的参赛之所以填0是应为我们只需要返回第一条线路routeOverlay.setData(result.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);mapView.invalidate();}@Overridepublic void onGetPoiDetailSearchResult(int result, int type) {}@Overridepublic void onGetPoiResult(MKPoiResult result, int type, int iError) {//对调用的搜索方法进行回调响应//v3.00//if(result == null){//return;//}//PoiOverlay poiOverlay = new PoiOverlay(BaiDu_SuYiActivity.this, mapView);//poiOverlay.setData(result.getAllPoi());//mapView.getOverlays().add(poiOverlay);//mapView.invalidate();//v8.00if(result == null||iError != 0){Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();return;}//定义一个公交线路图描述类MKPoiInfo mkPoiInfo = null;//获得公交线路图的总的站点int totalPoiNum = result.getNumPois();for(int i = 0;i<totalPoiNum;i++){mkPoiInfo = result.getPoi(i);if(mkPoiInfo.ePoiType == 2){break;//如果说返回的时候公交的线路图就返回}}mkSearch.busLineSearch("北京", mkPoiInfo.uid);}@Overridepublic void onGetRGCShareUrlResult(String arg0, int arg1) {}@Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {}@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult result, int type) {//公交换乘的回调方法//v7.00//if(result == null){//return;//}//TransitOverlay transitOverlay = new TransitOverlay(BaiDu_SuYiActivity.this, mapView);//transitOverlay.setData(result.getPlan(0));//mapView.getOverlays().add(transitOverlay);//刷新地图//mapView.invalidate();//v9.00if(result == null){return;}//获得所有的驾车线路图int planNum = result.getNumPlan();for(int i = 0 ;i<planNum;i++){TransitOverlay transitOverlay = new TransitOverlay(BaiDu_SuYiActivity.this, mapView);transitOverlay.setData(result.getPlan(i));mapView.getOverlays().add(transitOverlay);}mapView.invalidate();mapView.getController().animateTo(result.getStart().pt);}@Overridepublic void onGetWalkingRouteResult(MKWalkingRouteResult result, int type) {//对调用的搜索方法进行回调响应if(result == null){return;}RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);routeOverlay.setData(result.getPlan(0).getRoute(0));mapView.getOverlays().add(routeOverlay);//刷新地图mapView.invalidate();}    }        //标注一个遮盖物    public class MyOverlay extends Overlay{    //声明一个地点    private GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));    //声明一个画笔工具    private Paint paint = new Paint();        @Override    public void draw(Canvas arg0, MapView arg1, boolean arg2) {    super.draw(arg0, arg1, arg2);        Point point = mapView.getProjection().toPixels(geoPoint, null);    arg0.drawText("这里是天安门", point.x,point.y,paint);    }    }        //标注多个遮盖物    public class MyOverLayItem extends ItemizedOverlay<OverlayItem>{        private List<OverlayItem> overlayItem = new ArrayList<OverlayItem>();        //定义一组坐标    private double mLat1 = 39.90923;//经    private double mLot1 = 116.397428;//纬        private double mLat2 = 39.92923;//经    private double mLot2 = 116.377428;//纬        private double mLat3 = 39.94923;//经    private double mLot3 = 116.357428;//纬        private double mLat4 = 39.96923;//经    private double mLot4 = 116.337428;//纬        //用于在地图上标识坐标,用一个图片标注public MyOverLayItem(Drawable drawable) {super(drawable);GeoPoint geoPoint1 = new GeoPoint((int)(mLat1*1E6),(int)(mLot1*1E6));GeoPoint geoPoint2 = new GeoPoint((int)(mLat2*1E6),(int)(mLot2*1E6));GeoPoint geoPoint3 = new GeoPoint((int)(mLat3*1E6),(int)(mLot3*1E6));GeoPoint geoPoint4 = new GeoPoint((int)(mLat4*1E6),(int)(mLot4*1E6));overlayItem.add(new OverlayItem(geoPoint1, "A", "这是第一个"));overlayItem.add(new OverlayItem(geoPoint2, "B", "这是第二个"));overlayItem.add(new OverlayItem(geoPoint3, "C", "这是第三个"));overlayItem.add(new OverlayItem(geoPoint4, "D", "这是第四个"));//刷新地图populate();}//返回指定的List集合中每一个坐标@Overrideprotected OverlayItem createItem(int arg0) {return overlayItem.get(arg0);}@Overridepublic int size() {return overlayItem.size();}    //当标注物被点击的时候@Overridepublic boolean onTap(int i) {Toast.makeText(BaiDu_SuYiActivity.this, overlayItem.get(i).getSnippet(), 2).show();return true;}    }                @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();    }    }    @Overrideprotected boolean isRouteDisplayed() {return false;}}



1楼soonqian昨天 22:29
下次TX也通告下!
Re: shuaiyinoo7小时前
回复soonqiann这是什么高级语言呀,我都听不懂

热点排行