热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何运用百度地图SDK进行开发(一)初级篇

版本:BaiduSDK2.12(旧版本)(3.0以上版本由于昨天申请SDK总出问题以后再记录)首先,来到百度地图API首页:http:developer.baidu.commap开发--

版本:BaiduSDK 2.12 (旧版本)(3.0以上版本由于昨天申请SDK总出问题以后再记录)

首先,来到百度地图API首页:http://developer.baidu.com/map/

开发--->Android开发--->Android地图SDK,点进去后,在左侧有个导航栏,点击 获取密钥,根据相关提示获取key,开发中要用到,这里不过多讲解。

点击相关下载,下载最新的Android地图SDK,解压后获得


往下看,点击开发指南--->配置环境发布,找到Android Studio工程配置方法,根据提示进行操作(这里由于讲的是旧版本2.12,与新版本略有差别,所以我截图下来)。

如何运用百度地图SDK进行开发(一)初级篇

之后把jar包加入到项目中

如何运用百度地图SDK进行开发(一)初级篇

如何运用百度地图SDK进行开发(一)初级篇

2个jar包都要加入,之后软件会自动进行编译,等待编译结束后就可以开始使用了。


代码部分:

(1)在布局中添加组件





    

    

(2)在配置文件中添加相关权限











(2)在MainActivity中编写代码

public class MainActivity extends AppCompatActivity {
    /**
     * 百度地图的引擎(管理地图)
     */
    private BMapManager manager;
    /**
     * 显示地图信息的
     */
    private MapView mapView;
    /**
     * 控制地图的:缩放、平移、旋转
     */
    private MapController controller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**
         * 加载布局之前,首先初始化地图的引擎
         */
        initManager();
        setContentView(R.layout.activity_main);
        /**
         * 初始化布局中的mapView
         */
        mapView = (MapView) findViewById(R.id.mapView);
        /**
         * 对控制器初始化
         */
        controller = mapView.getController();
        /**
         * 这里设置初始级别为显示第12级(1.0版本是3-18级别,2.0版本开始3-19个级别)
         */
        controller.setZoom(19);
        /**
         * 这里设置默认显示的中心地带(比如:116.312741(经度),39.979111(纬度))
         */
        controller.setCenter(new GeoPoint(39979111, 116312741));
    }

    private void initManager() {
        manager = new BMapManager(this);
        manager.init(ContentsUtils.KEY, new MKGeneralListener() {
            /**
             * 获取网络工作状态
             * @param isError  返回状态
             */
            @Override
            public void onGetNetworkState(int isError) {
                if (isError == MKEvent.ERROR_NETWORK_CONNECT) {
                    Toast.makeText(getApplicationContext(), "网络连接出错", Toast.LENGTH_SHORT).show();
                }
            }

            /**
             *获取许可状态
             * @param isError   返回状态
             */
            @Override
            public void onGetPermissionState(int isError) {
                if (isError == MKEvent.ERROR_NETWORK_CONNECT) {
                    Toast.makeText(getApplicationContext(), "申请的key出错了", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }


    /**
     * 优化
     */
    @Override
    protected void onResume() {
        super.onResume();
        mapView.onResume();
    }

    /**
     * 优化
     */
    @Override
    protected void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        /**
         * 该Activity销毁的时候,把地图显示的view也销毁掉,有助于优化
         */
        mapView.destroy();
    }

    /**
     * 这里是根据按键做出相应操作
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_1:
                mapView.setSatellite(false);
                mapView.setTraffic(false);
                break;
            case KeyEvent.KEYCODE_2:
                mapView.setSatellite(true);
                mapView.setTraffic(false);
                break;
            case KeyEvent.KEYCODE_3:
                mapView.setSatellite(false);
                mapView.setTraffic(true);

                break;
            default:

                break;
        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 设置按钮,控制软键盘的打开与关闭
     *
     * @param view
     */
    public void click(View view) {
        Toast.makeText(MainActivity.this, "打开/关闭键盘", Toast.LENGTH_SHORT).show();
        openInputMethod();
    }

    /**
     * 调用软键盘,打开/关闭
     */
    public void openInputMethod() {
        InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        if (imm.isActive()) {
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        } else {
            getSystemService(Context.INPUT_METHOD_SERVICE);
        }

    }
}

说明:这里多加了一点功能,就是左上角加个按钮,可以打开/关闭键盘,按键盘的1/2/3键,会分别显示电子地图/卫星地图/实时交通。其他相关操作,代码作了相应注释。

运行效果图:

如何运用百度地图SDK进行开发(一)初级篇



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • ServiceStack与Swagger的无缝集成指南
    本文详细介绍了如何在ServiceStack项目中集成Swagger,以实现API文档的自动生成和在线测试。通过本指南,您将了解从配置到部署的完整流程,并掌握如何优化API接口的开发和维护。 ... [详细]
author-avatar
黑鸽子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有