赞
踩
第三方平台百度地图的使用
我们在做项目的时候用到的最多的应该就是定位与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); } }
好啦,今天就先到这里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。