文章内容已经过时~大家去百度官方api学习。
http://developer.baidu.com/map/
http://lbsyun.baidu.com/sdk/download
功能描述:获取手机自身附近的兴趣点(Poi, 之后使用Poi表示兴趣点)列表,显示在listview中先上效果图
显而易见的是,图中只有一个简单的listview,然后每个item分别包含Poi的名字,地址和手机到poi所在的距离。由于我在学校里,附近只有5个ATM。
好了如果你看到的这个效果是你所需要的功能,内心是不是有点小激动呢?
现在我们来分析这个实现的思路:
零,做好之前的准备工作
一,首先是要得到手机自身的位置
二,然后根据这个位置和你要找的POI的名字来得到附近的POI列表
实现的步骤:
向项目中加入百度地图SDK。
登录后来访问 下载地址http://developer.baidu.com/map/sdkandev-download.htm全部商情下载
下载后解压成
在BaiduMap_AndroidSDK_v2.4.1_Sample - > BaiduMapsApiDemo - >库以及库 - > armeabi中
将 baidumapapi_v2_4_1.jar locSDK_3.1.jar libBaiduMapSDK_v2_4_1.so liblocSDK3.so以相同模式拷到我们当前新建的项目中
然后添加到构建路径
然后记得申请的关键:http://developer.baidu.com/map/android-mobile-apply-key.htm跟着提示走,这里就不叙述了。
东西准备好了,开始编写代码
首先当然是MainActivity.java
public class MainActivity extends Activity {
final static String TAG = "MainActivity";
private static final int MSG_SELFPOINT = 1;
private static final int MSG_MPOIINFOLIST = 2;
private static final String POI_NAME = "ATM"; // 搜索指定兴趣点名称
private static final int SCAN_SPAN = 60 * 1000; // 刷新时间
private static final int POI_DISTANCE = 1000; // 搜索半径
private LocationClient locationClient = null;
private MKSearch mMKSearch = null;
private GeoPoint selfPoint = null; // 自身经纬度
private ListView poiInfoList;
private List<poiinfo> mPoiInfoList = null;
@SuppressLint("HandlerLeak")
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SELFPOINT: // 获得自身经纬度
default:
Double[] locNum = (Double[]) msg.obj;
// 用给定的经纬度构造一个GeoPoint(纬度,经度)
selfPoint = new GeoPoint((int) (locNum[0] * 1E6), (int) (locNum[1] * 1E6));
// 执行搜索周边兴趣点列表
mMKSearch.poiSearchN