当前位置:   article > 正文

第三方平台——百度地图的使用《定位与Poi搜索》—AS_baidumap baidumap = new baidumap(ak); list

baidumap baidumap = new baidumap(ak); list searchpois = baidumap.

第三方平台百度地图的使用

我们在做项目的时候用到的最多的应该就是定位与Poi搜索了吧,所以今天就写一下这两个是怎么实现的。

首先,既然我们使用的是第三方的平台,我们需要做的第一就是到他的官方网站去查看Api以及环境的配置,说这么多好像都是废话,简单点说,到官方网站看开发指南~~

网址是http://lbsyun.baidu.com/index.php?title=androidsdk

看了开发指南,我们就要下载jar包以及so文件了,他已经打包好了,下载解压就都有了,包括demo,另外就是我们需要申请一个apiKey,指南里面也有相关的说明,请先不要关闭浏览器,因为我们等会还要用。

准备工作做的差不多了,现在我们先去建立demo吧。

第一步,我们到API文档那里找到所需要添加的权限,管他三七二十一,全部复制过来再说,放到我们的清单文件里面,我们在看指南的时候,有一个Hello BaiduMap的demo里面。。。突然发现我说的都是废话,因为这个demo里面都有。但是,我们每一个Activity建立之后都需要初始化是不是太麻烦了,所以,我们建立一个class文件,让他继承Application,然后实现 onCreate()方法,在这个里面实现百度地图的初始化操作,然后再清单文件里面讲当前的Application设置一个name为我们刚刚建立的Application,这样我们就需要每一次都初始化百度地图了。

第二步,布局,Demo中已经给出了怎么布局的,照着copy就可以了,布局中要加一个EditText,和Button 按钮,给Button按钮设置一个点击事件。

第三步,在逻辑代码中我们找出mapView,  

private EditText et;  //文本的输入
private MapView mMapView;  //map布局
private BaiduMap baiduMap;   //map对象
private PoiSearch mPoiSearch; //poi检索对象
private PoiInfo poiInfo;// poi节点

 BaiduMap baiduMap = mapView.getMap();   

第四步,在点击事件中获取文本框的内容,

public void searchClick(View view) {
    String ketstr = et.getText().toString().trim();
    if (TextUtils.isEmpty(ketstr)) {
        Toast.makeText(getApplicationContext(), "输入内容不能为空", Toast.LENGTH_SHORT).show();
    }
    mPoiSearch = PoiSearch.newInstance();
    mPoiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
        @Override
        public void onGetPoiResult(PoiResult poiResult) {
  	    baiduMap.clear();//这个东西是用来清除之前的信息的,不然会有所重复
            MyOverlay overlay = new MyOverlay(baiduMap);
            baiduMap.setOnMarkerClickListener(overlay);
            overlay.setData(poiResult);
            overlay.addToMap();
        }

        @Override
        public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
            Intent intent = new Intent(PoiSearchActivity.this, DetailActivity.class);
            intent.putExtra("url", poiDetailResult.getDetailUrl());
            startActivity(intent);
        }

        @Override
        public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

        }
    });
    mPoiSearch.searchInCity(new PoiCitySearchOption().city("北京").keyword(ketstr));
}
我们还需要一个覆盖物来显示我们搜索的东西

public class MyOverlay extends PoiOverlay {
    public MyOverlay(BaiduMap baiduMap) {
        super(baiduMap);
    }

    @Override
    public boolean onPoiClick(int i) {
        List<PoiInfo> list = getPoiResult().getAllPoi();
        poiInfo = list.get(i);
        Button btn = new Button(getApplicationContext());
        btn.setBackgroundColor(Color.BLACK);
        btn.setText(poiInfo.name);
        BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(btn);
        final InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, poiInfo.location, -100, new InfoWindow.OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick() {
                mPoiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(poiInfo.uid));
                baiduMap.hideInfoWindow();
            }
        });
        baiduMap.showInfoWindow(infoWindow);
        return super.onPoiClick(i);
    }
}

好啦,今天就先到这里

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/938211
推荐阅读
相关标签
  

闽ICP备14008679号