東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

BaiduMap API两日探究

2014年3月19日星期三





这几天研究Baidu Map android SDK,打算用来嵌入微信实现自动打招呼营销,好恶心的需求。。。。
manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="dc.test" android:versionCode="1" android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
   
     <!-- 屏幕支持 -->
    <supports-screens android:largeScreens="true" android:normalScreens="true"
            android:smallScreens="true" android:resizeable="true" android:anyDensity="true"/>
   
    <!-- 百度地图权限开始 -->
        <!--使用网络功能所需权限  -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
        <!-- SDK离线地图和cache功能需要读写外部存储器 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
        <!-- 获取设置信息和详情页直接拨打电话需要以下权限  -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <uses-permission android:name="android.permission.CALL_PHONE"/>
        <!-- 使用定位功能所需权限,demo已集成百度定位SDK,不使用定位功能可去掉以下6项 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE"/>
        <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_GPS"/>
        <!-- SD卡读取权限,用户写入离线定位数据-->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <!-- 允许应用读取低级别的系统日志文件-->
        <uses-permission android:name="android.permission.READ_LOGS"/>
    <!-- 百度地图权限结束 -->
   
    <!-- 设置系统GPS权限 -->
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

    <application
        android:allowBackup="true" android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
       
        <activity
            android:name=".baidu.map.activity.MainActivity" android:configChanges="orientation"
            android:label="BaiduMap" android:screenOrientation="sensor" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
        <activity android:name=".baidu.map.activity.BaiduMapActivity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
        <activity android:name=".baidu.map.activity.BaiduMapEventActivity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
        <activity android:name=".baidu.map.activity.BaiduMapLocationActivity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>

        <activity android:name=".sys.gps.activity.TestSysGPSActivity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
        <activity android:name=".sys.gps.activity.TestSysGPS2Activity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
        <activity android:name=".sys.gps.activity.TestSysGPS3Activity" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
        <!--
        <activity android:name=".demo.MapDemo" android:screenOrientation="sensor" android:configChanges="orientation|keyboardHidden"/>
         -->
       
       
        <!-- 定位服务 -->
       <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>
       
    </application>
</manifest>
key机制,【SHA1;dc.test】百度API后台生成key,每个key只能用于一个app,用到第二个的时候就不显示地图!!!

学习流
一刀流:
基本绘制,销毁;
属性操作(开关交通图,卫星图);
POI搜索(两坐标矩形内,济南市内公安局,上海东方明珠周边5000米开锁公司);
地理信息查询(解析地址为坐标,解析坐标为地址);
输入地址时模糊查询提示;
分享当前位置;

二刀流(监听):
mMapView.regMapViewListener(mBMapMan, new BaiduMKMapViewListener());//注册地图事件监听        mMapView.regMapTouchListner(new BaiduMKMapTouchListener());//点击事件监听        mMapView.regMapStatusChangeListener(new BaiduMKMapStatusChangeListener());//地图状态监听
三刀流(定位):
手动设置定位源

自动获取位置:

关键在于监听

百度定位在android AVD也可以说是emulator上常年旅居非洲4,4左右,使用定位SDK3.1,3.3,4.0,4.1旅行完毕。

使用Google map api可以很好的解决该问题。

四刀流(实时位置):

方法大同小异





说他是一种定位,不如说他是一种监测
这种方法可以

这种方法也可以

坐标可以使用百度坐标拾取http://api.map.baidu.com/lbsapi/getpoint/index.html
然后就可以在地图上实现瞬移了。。

当然,这还要靠运气。
然后,反编译Wechat....
当前版本Wechat380,5.2版,经试,4.0版可以完全反编译成功。
。。。。然后,这个项目就被叫停了!



没有评论 :

发表评论