移动互联网开发技术教学网站项目研究第五篇

2021@SDUSC

显示地图

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        SDKInitializer.initialize(getApplicationContext());

        setContentView(R.layout.activity_main);

        showContacts();

    }

    private void init(){
        
        mMapView = findViewById(R.id.themapView);
       
        mBaiduMap = mMapView.getMap();

        mBaiduMap.setMyLocationEnabled(true);

        //绑定按钮监听事件
        findViewById(R.id.btn_library).setOnClickListener(this);
        findViewById(R.id.btn_tech).setOnClickListener(this);
        findViewById(R.id.btn_dining).setOnClickListener(this);
        List<OverlayOptions> options = new ArrayList<OverlayOptions>();
      
        LatLng p_library = new LatLng(36.674945, 117.144168);
        LatLng p_teach = new LatLng(36.673717, 117.145928);
        LatLng p_dining = new LatLng(36.672553, 117.147145);

        BitmapDescriptor bitmap = BitmapDescriptorFactory
                .fromResource(R.mipmap.icon_mark);
      
        OverlayOptions option1 =  new MarkerOptions()
                .position(p_library)
                .icon(bitmap);
        OverlayOptions option2 =  new MarkerOptions()
                .position(p_teach)
                .icon(bitmap);
        OverlayOptions option3 =  new MarkerOptions()
                .position(p_dining)
                .icon(bitmap);
   
        options.add(option1);
        options.add(option2);
        options.add(option3);

        mBaiduMap.addOverlays(options);

        //定位初始化
        mLocationClient = new LocationClient(this);

       
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); 
        option.setCoorType("bd09ll"); //五秒返回一次位置
        
        option.setIsNeedAddress(true);
        
        option.setIsNeedLocationDescribe(true);

        mLocationClient.setLocOption(option);

    
        MyLocationListener myLocationListener = new MyLocationListener();
        mLocationClient.registerLocationListener(myLocationListener);
        mLocationClient.start();
        

    }
 
    @Override
    protected void onResume() {
        super.onResume();
       
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
       
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
       
        mMapView.onDestroy();
    }
    private ImageButton btn_des_back;
    private TextView place_name, place_des;
    private ImageView place_pic;
    Intent mIntent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_description);
        mIntent = getIntent();
        init();
    }

    private void init(){
        place_name = (TextView)findViewById(R.id.place_name);
        place_des = (TextView)findViewById(R.id.place_des);
        place_pic = (ImageView)findViewById(R.id.place_pic);
        //获取从MainActivity传输过来的数据
        Bundle bd = mIntent.getExtras();
        //地名
        int nameid = bd.getInt("name");
        place_name.setText(nameid);
        //描述
        int desid = bd.getInt("des");
        place_des.setText(desid);
        //图片
        int picid = bd.getInt("picname");
        place_pic.setImageResource(picid);

    }

    //绑定返回按钮的点击事件
    public void back_onclick(View v){
        Intent mIntent2 = new Intent();
        mIntent2.setClass(DescriptionActivity.this, MainActivity.class);
        startActivity(mIntent2);
    }

SDKInitializer.initialize(getApplicationContext());是显示地图的方法。后面有一个获取定位权限的方法,获取后初始化地图必须放在布局初始化之前。
MapView是显示地图视图的类,责从服务端获取地图数据。它将会捕捉屏幕触控手势事件,可以进行放大和缩小。
List<OverlayOptions> options是要创建一个放置软件园校区标志性建筑的集合,OverlayOptions类是地图覆盖物选型基类。MarkerOptions类定义地图 Marker 覆盖物基类,position(LatLng p_library)可设置覆盖物的位置坐标,icons(bitmap)
设置覆盖物的图标.
LatLng p_library = new LatLng(36.674945, 117.144168);LatLng类是地理坐标基本数据结构,构造方法中前者是经度,后者是纬度,这些数据为作者通过百度地图官网进行搜索获得。
Bitmap 代表一个位图,BitmapDescriptor是Bitmap 描述信息类,BitmapDescriptorFactorybitmap 描述信息工厂类fromResource(R.mipmap.icon_mark)
根据资源Id创建不适配设备像素密度的Bitmap描述信息。 mBaiduMap.addOverlays(options);为获取的地图添加刚刚根据纬度得到的地图覆盖物。
LocationClient定位服务的客户端,宿主程序在客户端声明此类,并调用,仅可以在在主线程中启动。LocationClientOption配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等。setOpenGps(true)设置打开gps进行定位;setCoorType("bd09ll")设置坐标类型,设置的参数为返回百度经纬度坐标系;setScanSpan(5000);设置扫描间隔为5秒,单位是毫秒 当<1000时,定时定位无效;setIsNeedAddress(true);设置返回地址信息;setIsNeedLocationDescribe(true);设置返回位置语义化信息。
后面为定位服务添加监听器。registerLocationListener(myLocationListener);为注册定位监听函数。start();启动定位sdk。
在activity执行onResume,即在这个活动在应用程序与用户开始可交互的时候调用mMapView. onResume (),将地图唤醒,开始显示地图页面。
在activity执行onPause,即当前活动将要被暂停,上一个活动即将被恢复时调用mMapView. onPause (),将地图暂停。
在activity执行onDestroy,即活动被系统销毁之前调用mMapView.onDestroy()将地图销毁。以上三个方法实现地图的1声明周期管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值