zoukankan      html  css  js  c++  java
  • 百度地图

    <com.baidu.mapapi.map.MapView
            android:id="@+id/XXX"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"
            ></com.baidu.mapapi.map.MapView>

     * 基本地图

    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<PoiInfo> 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;
            }
        }
    }

     

  • 相关阅读:
    MyEclipse快捷键大全
    The type 'Microsoft.Office.Interop.Excel.ApplicationClass' has no constructors defined
    ‘Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c’
    使用游标循环表的简单DEMO
    URL Records
    一步一步教你实现CTreeCtrl 自绘
    自绘按钮
    UDP文件传输的实现
    美化VC界面(用户登录界面)
    如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5436359.html
Copyright © 2011-2022 走看看