栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android实战开发之三种地图类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android实战开发之三种地图类型

目录

前言

一、要求

二、关键代码分析

三、全部代码

四、结果


前言

这个项目是老早时候做的了,今天突然想写博客记录一下。首先需要安装配置好Java开发环境,并选择任意一款Android开发工具进行编程,推荐下载安装Android Studio软件进行程序开发。在开始进行Android编程开发之前需要对Java基础知识有一定的了解和掌握。在开始之前,记得导入定位及地图的相关jar包,Android Studio用gradle管理依赖(当然maven仓库也是管理依赖的一个比较好的工具)。

一、要求

结合百度地图开放平台:百度地图开放平台 | 百度地图API SDK | 地图开发或者高德地图开放平台:高德开放平台 | 高德地图API实现Android地图开发功能小案例,需求如下(以百度地图开放平台开发为例):

1、通过添加View控件显示地图,能够显示出地图的默认位置、地图名称等信息。

2、实现切换地图类型的功能,对于地图SDK提供了3种主要的地图类型,即普通地图、卫星图和空白地图。用户通过点击对应的按钮,能够实现不同类型地图之间的相互切换功能。

二、关键代码分析

1、首先获取各种权限,包括网络权限等,在AndroidManifest.xml中配置


    
    
    
    
    
    
    
    

2、添加开发秘钥apikey,需要去百度地图开放平台申请

3、初始化及获取地图控件引用 ,在使用SDK各组件之前初始化context信息,传入ApplicationContext,注意该方法要在setContentView方法之前实现

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        myMap = (MapView) findViewById(R.id.bmapView);
        mBaiduMap=myMap.getMap();
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

    }

4、用分支语句实现地图样式的切换 

public void setMapMode(View view) {
        boolean checked = ((RadioButton) view).isChecked();
        switch (view.getId()) {
            case R.id.normal:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                }
                break;
            case R.id.statellite:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                }
                break;
            case R.id.blank:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
                }
                break;
            default:
                break;
        }
    }

5、地图生命周期的管理

onResume():是在启动activity启动之后才能执行的,也就是恢复执行。

onPause():当Activity进入后台并且该Activity并未被销毁时,该方法会被调用。

onDestroy():生命周期的销毁操作。

@Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行myMap.onResume(),实现地图生命周期管理
        myMap.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行myMap.onPause(),实现地图生命周期管理
        myMap.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行myMap.onDestroy(),实现地图生命周期管理
        myMap.onDestroy();
    }

三、全部代码

activity_main.xml:




    

        

    

    



content_main.xml: 




    

    

        

            

            

            
        

        

 AndroidManifest.xml:




    
    
    
    
    
    
    
    
    

    
        
        
            
                

                
            
        
    

 MainActivity.java:

package com.android.mybd;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.RadioButton;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapView;

public class MainActivity extends AppCompatActivity  {
    private MapView myMap = null;
    private BaiduMap mBaiduMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext 
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        myMap = (MapView) findViewById(R.id.bmapView);
        mBaiduMap=myMap.getMap();
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行myMap.onResume(),实现地图生命周期管理
        myMap.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行myMap.onPause(),实现地图生命周期管理
        myMap.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行myMap.onDestroy(),实现地图生命周期管理
        myMap.onDestroy();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    public void setMapMode(View view) {
        boolean checked = ((RadioButton) view).isChecked();
        switch (view.getId()) {
            case R.id.normal:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
                }
                break;
            case R.id.statellite:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
                }
                break;
            case R.id.blank:
                if (checked) {
                    mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);
                }
                break;
            default:
                break;
        }
    }

}

四、结果

1、主界面图,默认勾选普通图:

2、卫星图展示:

3、空白地图展示: 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号