• 01、环境配置


    这是腾讯的地图,如果你去用它的SDK它不会有这些图标的.它是为滴滴打车专门定制的这套东西.显示一些标志物,点一下能弹出相应的信息.

    团购会有电影院的地址.地址的话我们看完之后还不知道怎么走.对它的印象也不是很深,你直接看可能对它不会有什么印象也不知道它在哪儿.

    显示了一个二维的地图.然后还有放大缩小,左下角还有比例尺.比例尺它就显示了你当前在地球上这一段位置代表多远的一个距离.比如这一段长度代表的是500米,放大一下,这一段长度呢它代表的距离就小一点了,变成两百米了.如果你放的很大的话,它代表的距离会很小,10米.这个10米就说代表你在这地图上真实的一小段长度呢它就代表的是10米.

    地图图层分类,可以切换成这个卫星地图.还有这个2D的一个地图.还有一个是交通图,交通图是用于显示我们这个交通路况的.比如说哪个地方拥堵啊,哪个地方比较畅通.

    标志覆盖物是今天的一个重点.

    学习第三方的SDK,有两种方式,一种是你直接看它的开发文档,也就是它的demo,它的小demo,你可以把它运行起来.

    Android Tools->Fix Project Properties.


    大多数这种第三方开发的SDK它都会需要一个Key.那这个Key怎么申请呢?看开发文档.

    SHA1就是加密的一串字符串.跟我们的那个MD5一样,MD5它也是属于签名中的一种.这个SHA1是通过哈希算法算出来的.它比MD5要更加的严谨.


    获取安全码:

    一定要对着你这个安卓虚拟设备来找,因为有些人呢他可能在自己电脑配了两个SDK,两个SDK,那具体你这个Eclipse运行的时候他用的是哪一个SDK呢,那你就点一下这里,以这个为准.

    要取这个debug.keystore的一个签名.这个是我们Eclipse默认运行apk的时候呢它用这个debug.keystore来签名的.它的密码默认是android.

    只要你的电脑没换,Eclipse没换,那不论你打多少次这个命令,它的签名都会一模一样.最后生成的这个百度地图的Key,只能,如果说我是在我这里面通过这个指纹生成的,那只能在我的电脑里面去用,在你的电脑是用不了的.你们只能自己去再申请一个.

    还需要一个包名,这个包名指的是我们清单文件AndroidManifest.xml里面的包名.进程会以这个指定的这个包名作为它进程的名字.

    如果你用这个/BaiduMapsApiDemo/src/baidumapsdk.demo包名有点危险,因为我这里指定的这个包名可以跟这个/BaiduMapsApiDemo/src/baidumapsdk.demo完全不相同都是可以的.就是说我们最好是从/BaiduMapsApiDemo/AndroidManifest.xml这里面去选.


    这个Key:3vPbgj0GeoFkyuaoL3HmRBVhLcagPt7p只能在我机器上运行它就没问题,因为我们生成这个key的时候呢是需要一个签名的,这个签名的话呢每个人在自己的电脑呢拿到的签名都不一样,所以这个Key呢你们只能自己去再申请一个.

    这个项目运行会比较慢,因为这里面会有很多的.so库.这个就是通过JNI去调用.编译这些库花的时间会比较多.

    如果说你这个Key是不对的,比如说你打错了一个字符,那这个地图它是不会显示出来的,它是不会给你提供这个地图服务的.


    我们想自己去搭建开发环境,这个demo呢人家把环境都搭建好了,就是缺了一个Key而已.


    那我们还是从0开始搭建这个开发环境.

    配置环境及发布

    armeabi是CPU的架构,最开始的时候这个百度地图只支持armeabi这个CPU的架构.现在呢它支持CPU的架构就非常多了.真实的开发应该是全部都拿,如果全部都拿一会儿编译会非常慢,所以我拿一个x86就行了.把它放到libs目录.


    申请Key需要两个数据:一个是Android签名证书的sha1值(sha1是这样的一个指纹),一个是包名:baidumapsdk.demo.我们这个Eclipse运行的时候用的都是同一个debug.keystore,所以说这个签名肯定一样.你再去敲一下那个命令拿到的签名肯定一样.但是包名呢它就不同了,所以说这个key你不能用原来demo的那个key,必须重新去申请.


    Hello BaiduMap

                                                                                                  


    只要是阅读开发文档有红色的文字呢我们就需要去读一下,一定要读一下.因为红色比较重要.Application是在四大组件之前就初始化,在它们之前.也就是说我们应用最开始运行的时候呢它会先给你初始化这个Application,然后呢才是初始化这个Activity还有服务等等.既然人家建议我们这么做,那么我们就创建一个Application.


    package com.itheima.baidumap74;
    
    //import com.baidu.mapapi.SDKInitializer;
    
    import com.baidu.mapapi.map.MapView;
    
    import android.os.Bundle;
    import android.app.Activity;
    //import android.view.Menu;
    
    public class MainActivity extends Activity {
    
        private MapView mMapView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
            // 注意该方法要再setContentView方法之前实现
            // SDKInitializer.initialize(getApplicationContext());
            setContentView(R.layout.activity_main);
             //获取地图控件引用  
            mMapView = (MapView) findViewById(R.id.bmapView);  
        }
        //Ctrl+I格式化
        //这是百度地图规定的,它mMapView也有生命周期方法,你必须在Activity相应的生命周期方法里面呢去调mMapView对应的生命周期方法.
        //这个就没什么好记的了,死记硬背就行了.照着调用.
        @Override  
        protected void onDestroy() {  
            super.onDestroy();  
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
            mMapView.onDestroy();  
        }  
        @Override  
        protected void onResume() {  
            super.onResume();  
            //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
            mMapView.onResume();  
            }  
        @Override  
        protected void onPause() {  
            super.onPause();  
            //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
            mMapView.onPause();  
            }  
    
    }
    package com.itheima.baidumap74;
    import com.baidu.mapapi.SDKInitializer;
    
    
    import android.app.Application;
    
    //MyApplication也可以说是一个组件,既然是组件的话呢跟你那个四大组件一样是也需要配置的.
    public class MyApplication extends Application {
        @Override
        public void onCreate() {// 覆盖一个onCreate()方法,当这个组件MyApplication被运行的时候呢它首先会走这个onCreate
            // 进行一个创建.
            // TODO Auto-generated method stub
            // super.onCreate();//空实现,可以删除掉.
            // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
            // 注意该方法要再setContentView方法之前实现
            SDKInitializer.initialize(getApplicationContext());//把初始化SDK这个代码在MainActivity里面剪切掉,放到
            //Application里面去完成
        }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.itheima.baidumap74"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" 
            android:name=".MyApplication"><!-- .就代表你前面这个基础的一个包 -->
            <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="QaDs6ScFuwxGh75ku6gijqNnBhnXmNqZ" />
                     <!--  
                     下面这个activity也是一样,简单一点,以.打头就行了.这样看起来会比较简短一点,看起来会比较舒服.
                android:name="com.itheima.baidumap74.MainActivity"
                -->
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <!-- MapView是带包名的,说明这个View不是系统自带的View,是第三方的View.明显就是用于显示地图的叫MapView -->
    
        <com.baidu.mapapi.map.MapView
            android:id="@+id/bmapView"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clickable="true" />
    
    </RelativeLayout>
  • 相关阅读:
    BugKu web 矛盾
    BugKu 域名解析
    Dummy game
    BugKu 变量1
    BugKu web5
    递归算法
    Django进阶(转载)
    centos 7防火情配置
    cenos7切换阿里源
    centos7 编译安装nginx
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7261213.html
Copyright © 2020-2023  润新知