博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度地图
阅读量:4496 次
发布时间:2019-06-08

本文共 13084 字,大约阅读时间需要 43 分钟。

 * 基本地图

public class MapActivity_basic extends Activity {    private MapView mapview;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_mapbase);        mapview = (MapView) findViewById(R.id.mapview);    }    //将mapview的生命周期跟acitivity的生命周期相绑定。    @Override    protected void onResume() {        super.onResume();        mapview.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapview.onPause();    }    @Override    protected void onDestroy() {        super.onDestroy();        mapview.onDestroy();    }}

*3D地图

public class MapActivity_base_3D extends Activity {    private MapView mapview_3d;    private BaiduMap mBaiduMap;    private RadioGroup radioGroup;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_mapbase_3d);        mapview_3d = (MapView) findViewById(R.id.mapview_base_3d);        mBaiduMap = mapview_3d.getMap();        radioGroup = (RadioGroup) findViewById(R.id.rg_map);        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                if(checkedId==R.id.rb_base){                    //设置普通地图。                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);                }else if(checkedId==R.id.rb_satellife){                    //卫星地图                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);                }else{                    //开启实时交通                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);                    mBaiduMap.setTrafficEnabled(true);                }            }        });    }    @Override    protected void onResume() {        super.onResume();        mapview_3d.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapview_3d.onPause();    }    @Override    protected void onDestroy() {        super.onDestroy();        mapview_3d.onDestroy();    }}

*覆盖物

public class MapActivity_overlay extends Activity {    //113.347003,23.182418    private MapView mapview_overlay;    private BaiduMap baiduMap_overlay;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_overlay);        mapview_overlay = (MapView) findViewById(R.id.mapview_overlay);        baiduMap_overlay = mapview_overlay.getMap();        //坐标        LatLng latLing = new LatLng(23.182418,113.347003);        //图片。        BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_marka);        OverlayOptions overlayOptions = new MarkerOptions().position(latLing).icon(bitmap);        //添加覆盖层。--需要坐标位置和图片。        baiduMap_overlay.addOverlay(overlayOptions);      //  LatLng statusLatting = new LatLng();        //设置地图的中心位置。        //坐标,缩放,缩放的值范围为3-20的浮点数。        MapStatusUpdate mapstatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latLing,17);        baiduMap_overlay.setMapStatus(mapstatusUpdate);    }    @Override    protected void onResume() {        super.onResume();        mapview_overlay.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapview_overlay.onPause();    }    @Override    protected void onDestroy() {        super.onDestroy();        mapview_overlay.onDestroy();    }}

*定位

public class Activity_location extends Activity implements BDLocationListener{    private MapView mapview_location;    private BaiduMap baiduMap;   private  LocationClient locationClient;    private  boolean isFirst = true;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_location);        mapview_location = (MapView) findViewById(R.id.mapview_location);        baiduMap = mapview_location.getMap();        baiduMap.setMyLocationEnabled(true);//开启定位图层        //创建定位客户端。        locationClient = new LocationClient(this);        initLocation();        locationClient.registerLocationListener(this);        locationClient.start();//开始定位。    }    //配置定位的参数    private void initLocation() {        //设置定位功能可用        baiduMap.setMyLocationEnabled(true);//        1、设置定位参数        LocationClientOption option = new LocationClientOption();        //3、option一系列设置        //3.1设置坐标系        option.setCoorType("bd09ll");//        3.2设置定位模式        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//        3.3设置开启Gps        option.setOpenGps(true);//        3.4设置扫描频率        option.setScanSpan(3 * 1000);//        3.5设置是否接受地址信息        option.setIsNeedAddress(true);//        3.6设置是否需要设备方向        option.setNeedDeviceDirect(true);//返回定位结果包含手机机头方向        //2、使用定位参数        locationClient.setLocOption(option);    }    @Override    protected void onResume() {        super.onResume();        mapview_location.onResume();    }    @Override    protected void onPause() {        super.onPause();        mapview_location.onPause();    }    @Override    protected void onDestroy() {        baiduMap.setMyLocationEnabled(false);        mapview_location.onDestroy();        mapview_location = null;        locationClient.stop();        super.onDestroy();    }    @Override    public void onReceiveLocation(BDLocation bdLocation) {        System.out.println( "收到定位数据"+bdLocation.getAddrStr()+" long = "+bdLocation.getLongitude());//        1、构造定位数据        MyLocationData data = new MyLocationData.Builder()                .direction(bdLocation.getDirection())//获取方向                .latitude(bdLocation.getLatitude())//纬度                .longitude(bdLocation.getLongitude())//经度                .accuracy(bdLocation.getRadius())//定位精度                .build();//        2、设置定位数据        baiduMap.setMyLocationData(data);//        3、更新地图中心点//        定位的坐标点        LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());//        地图状态更新类        MapStatusUpdate mapSatusUpadate = MapStatusUpdateFactory.newLatLng(ll);//          更新地图状态        baiduMap.animateMapStatus(mapSatusUpadate);    }}

*搜索

public class Activity_POI extends Activity implements OnGetPoiSearchResultListener {    private MapView mapview_poi;    private BaiduMap baiduMap_poi;    private PoiSearch poiSearch;    private EditText edt_city, edt_key;    private List
list_city; private int totalNum_city; private int pageNum = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_poi); initView(); mapview_poi = (MapView) findViewById(R.id.mapview_poi); baiduMap_poi = mapview_poi.getMap(); //创建对象 poiSearch = PoiSearch.newInstance(); //设置监听器 poiSearch.setOnGetPoiSearchResultListener(this); /* LatLng latLing = new LatLng(23.182418, 113.347003); MapStatusUpdate mapstatus = MapStatusUpdateFactory.newLatLngZoom(latLing, 15); baiduMap_poi.setMapStatus(mapstatus);*/ } private void initView() { edt_city = (EditText) findViewById(R.id.edt_city); edt_key = (EditText) findViewById(R.id.edt_key); } @Override protected void onResume() { super.onResume(); mapview_poi.onResume(); } @Override protected void onPause() { super.onPause(); mapview_poi.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mapview_poi.onDestroy(); poiSearch.destroy(); } //得到检索的结果 @Override public void onGetPoiResult(PoiResult poiResult) { if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) { //清除地图的覆盖物 baiduMap_poi.clear(); //创建。 // PoiInfo poiInfo = poiResult.getAllPoi().get(0); list_city = poiResult.getAllPoi(); totalNum_city = poiResult.getTotalPageNum(); MyPoiOverLay poiOverLay = new MyPoiOverLay(baiduMap_poi); baiduMap_poi.setOnMarkerClickListener(poiOverLay); poiOverLay.setData(poiResult); poiOverLay.addToMap();//添加到map上。 poiOverLay.zoomToSpan();//缩放 /* for (PoiInfo poi : list_city) { LatLng latlng = poi.location; System.out.println(poi.address + ":" + poi.name); BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_marka); OverlayOptions options = new MarkerOptions().icon(bitmap).position(latlng); baiduMap_poi.addOverlay(options); }*/ } if (poiResult == null || poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) { System.out.println(poiResult.error.toString()); Toast.makeText(Activity_POI.this, "未找到结果", Toast.LENGTH_LONG) .show(); return; } } //检索结果的详情页 @Override public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) { if (poiDetailResult != null) { Toast.makeText(this, poiDetailResult.getAddress() + ":" + poiDetailResult.getName(), Toast.LENGTH_SHORT).show(); } } //按钮的点击事件。 public void click(View view) { String city = edt_city.getText().toString();//获得城市 String key = edt_key.getText().toString();//获得关键字。 switch (view.getId()) { case R.id.btn_search_city: searchInCitys(city, key, 0); break; case R.id.btn_bound: break; case R.id.btn_nearby: break; case R.id.btn_next: pageNum++; if (pageNum > totalNum_city) { pageNum = 0; } //搜索 searchInCitys(city, key, pageNum); break; } } //城市内搜索的方法。以方便调用。 public void searchInCitys(String city, String key, int pageNum) { //先创建 PoiCitySearchOption options = new PoiCitySearchOption(); //设置属性。 options.city(city); options.keyword(key); options.pageNum(pageNum); poiSearch.searchInCity(options); } //周边搜索 public void searchInNearBy(String key) { PoiNearbySearchOption options = new PoiNearbySearchOption(); options.keyword(key);//设置关键字 // options.location();//设置中心坐标 // options.radius();//设置半径 poiSearch.searchNearby(options); } public void searchInBound(String key){ PoiBoundSearchOption options = null; options = new PoiBoundSearchOption(); options.keyword(key); LatLngBounds.Builder builder = null; builder = new LatLngBounds.Builder(); // builder.include(new LatLng()); // builder.include(new LatLng()); LatLngBounds bounds = builder.build(); options.bound(bounds); poiSearch.searchInBound(options); } class MyPoiOverLay extends PoiOverlay { /** * 构造函数 * * @param baiduMap 该 PoiOverlay 引用的 BaiduMap 对象 */ public MyPoiOverLay(BaiduMap baiduMap) { super(baiduMap); } //点击某个热点的时候毁掉 @Override public boolean onPoiClick(int i) { PoiInfo poiInfo = list_city.get(i); poiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(poiInfo.uid)); return true; } }}

*MainActivity

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void click(View view){        switch (view.getId()){            case R.id.btn_basicMap:                Intent intent_basic = new Intent(this,MapActivity_basic.class);                startActivity(intent_basic);                break;            case R.id.btn_basic_3d:                Intent intent_basic_3d = new Intent(this,MapActivity_base_3D.class);                startActivity(intent_basic_3d);                break;            case R.id.btn_basic_overlay:                Intent intent_overlay = new Intent(this,MapActivity_overlay.class);                startActivity(intent_overlay);                break;            case R.id.btn_basic_location:                Intent intent_location = new Intent(this,Activity_location.class);                startActivity(intent_location);                break;            case R.id.btn_basic_poi:                Intent intent_poi = new Intent(this,Activity_POI.class);                startActivity(intent_poi);                break;        }    }}

 

转载于:https://www.cnblogs.com/anni-qianqian/p/5436359.html

你可能感兴趣的文章
(转)如何在maven的pom.xml中添加本地jar包
查看>>
JSLink and Display Templates Part 6 – Creating View Templates and Deployment Options
查看>>
Android应用内实现视频播放--腾讯浏览服务(TBS)
查看>>
线程锁和自旋锁的比较
查看>>
手机端页面自适应最简单解决方案—rem布局
查看>>
成为一名优秀程序员所需要知道的15件事
查看>>
python之排序(sort/sorted)
查看>>
读书心得
查看>>
docker使用阿里云镜像加速器(属于自己的专属加速器)
查看>>
css基础5
查看>>
白盒测试与黑盒测试
查看>>
为什么你要用 Spring?
查看>>
94. 二叉树的中序遍历
查看>>
接口详解例子代码(附Java1.8的接口新特性)
查看>>
unity3d 关于断点下载和整个下载(用于更新)
查看>>
神经网络权值为什么不能初始化为零(1)
查看>>
C/C++(内存管理)
查看>>
项目Beta冲刺(团队)——用户试用调查报告
查看>>
Python爬虫入门教程 58-100 python爬虫高级技术之验证码篇4-极验证识别技术之一
查看>>
MySQL5.7表空间加密
查看>>