百度地图使用

概述,为了满足项目的需求,在项目当中集成了百度map,除了简单的定位,还包含了poi搜索,地理编码、周边搜索等功能;
1.集成,首先要去百度地图开发者平台成为开发者,并申请appkey,规则是sha1 + packageName;
如果不知道怎么申请key,可以看说明,例如
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key 如果觉得太长不看也没关系,可以直接将baiduMap demo运行一遍,当然项目能运行,但并不能跑通,可以观察到在android monitor当中会告诉你的sha1以及包名,那么就直接用这个去申请创建自己项目即可;说点题外话,将其他的项目移植到自己的Android studio当中,那么需要改动的地方有几个,如图 :

image.png

将项目build.gradle的compile 改成自己项目中的compile版本,我这边是2.3.1那么直接改,其次就是在gredle文件下有个gradle-wrapper.properties文件,也改成自己的,我这边是3.3;好了转回正文,开始我们项目集成;
(1).下载demo,将libs库当中jar包以及.so文件移植到项目中jniLibs目录下;
(2).androidManifest.xml文件当中将必须的permission service copy;
(3).开始项目代码的编写;

private void initMap() {
    // 地图初始化
    mMapView = (MapView) findViewById(R.id.bmapView);
    mBaiduMap = mMapView.getMap();
    // 开启定位图层
    mBaiduMap.setMyLocationEnabled(true);
    // 定位初始化
    mLocClient = new LocationClient(this);
    mLocClient.registerLocationListener(myListener);
    LocationClientOption option = new LocationClientOption();
    option.setOpenGps(true); // 打开gps
    option.setCoorType("bd09ll"); // 设置坐标类型
    option.setScanSpan(1000);//设置扫描频率,值<1000ms将不执行
    option.setIsNeedLocationPoiList(true); //获取定位周边poi信息
    mLocClient.setLocOption(option);
    mLocClient.start();
}

这里的myListener需要去implement BDLocationListener并重写onReceiveLocation,重点是可以获取poi列表,我们一般定位是基于手机,不单单是wifi、gps、基站等;那么怎么能比较准确呢?

   /**
 * 定位SDK监听函数
 */
public class LocationListener implements BDLocationListener {

    @Override
    public void onReceiveLocation(BDLocation location) {
        // map view 销毁后不在处理新接收的位置
        if (location == null || mMapView == null) {
            return;
        }
        MyLocationData locData = new MyLocationData.Builder()
                /**周边范围*/
                .accuracy(location.getRadius())
                        // 此处设置开发者获取到的方向信息,顺时针0-360
                .direction(100).
                        latitude(location.getLatitude())
                .longitude(location.getLongitude()).build();
        mBaiduMap.setMyLocationData(locData);
        if (isFirstLoc) {
            isFirstLoc = false;
            /**latlng是经纬度坐标的类*/
            LatLng ll = new LatLng(location.getLatitude(),
                    location.getLongitude());
            MapStatus.Builder builder = new MapStatus.Builder();
            builder.target(ll).zoom(18.0f);
            mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

            List poiList = location.getPoiList();
            if(poiList != null && poiList.size() > 0) {
                for (int i = 0; i< poiList.size();i ++) {
                    Log.e(Tag,poiList.get(i).address);
                    Log.e(Tag,poiList.get(i).name);
                    //可以将address和name信息拼接成adapter的bean,并增加到列表供用户选择
                }
            }
        }
    }
  
}

我这边提供一个简单的layout,如下

 <?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

<com.baidu.mapapi.map.MapView
    android:layout_width="match_parent"
    android:layout_height="260dp"
    android:id="@+id/map_view"/>

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycler_view"/>

</LinearLayout>

当然我不是这么做的,因为还有一种更好的方法,可以提供更加准确的poi列表,这边是使用定位后的经纬度反地理编码后的poi列表,而且用户在移动mapView的同时,随时获取map中点附件poi列表

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们...
    奔跑的小蚂蚁_8b28阅读 1,156评论 0 1
  • 环境配置 1.首先要有一个百度账号,因为百度地图使用是免费的,所以可以直接注册就可以了2.区百度地图API首页创建...
    PlatonsDream阅读 780评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,856评论 25 707
  • 创建地图 创建开发者账号 创建应用 申请秘钥 在工程中将ViewController.mm 因为SDK有一部分是以...
    Karen_阅读 672评论 0 4
  • 文/小叶 一 你的泪 如星辰坠落 直沉海底 二 用尽一生打捞 也不能让你 笑魇如昨 三 多少的伤 才换来一生 没了...
    博土阅读 269评论 0 1