1.新建项目

将地图API添加进classpath中:

2.在activity_main.xml中添加一个MapView,用来显示地图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <!-- 添加显示地图的控件 --> <com.baidu.mapapi.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" /> </LinearLayout>

3.修改AndroidManifest.xml文件,指定用户权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE" >
</uses-permission> <supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="false"
android:resizeable="true"
android:smallScreens="true" />

3.初始化地图引擎

        bMapManager = new BMapManager(MainActivity.this);
bMapManager.init(keyString, new MKGeneralListener() {
@Override
public void onGetPermissionState(int arg0) {
// TODO Auto-generated method stub
} @Override
public void onGetNetworkState(int arg0) {
// TODO Auto-generated method stub
if (arg0 == 300) {
Toast.makeText(MainActivity.this, "输入的key有误,请核实!", 1)
.show();
}
}
});
initMapActivity(bMapManager); //初始化地图引擎

4.取得MapView组件

mapView = (MapView) findViewById(R.id.bmapView);

5.实例化search对象并添加监听

mkSearch = new MKSearch();
mkSearch.init(bMapManager, new MySearchListener());

监听类:

private class MySearchListener implements MKSearchListener {

        @Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetPoiDetailSearchResult(int arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetPoiResult(MKPoiResult result, int type, int isError) {
// TODO Auto-generated method stub
if(result == null){
return;
}
PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView);
poiOverlay.setData(result.getAllPoi());
mapView.getOverlays().add(poiOverlay);
mapView.invalidate();
} @Override
public void onGetRGCShareUrlResult(String arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub }
}

6.根据关键词、中心点、半径进行搜索。

// 关键词,中心点,范围半径
mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)), 5000);

7.恢复、暂停、停止地图时地图引擎的操作

    @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (bMapManager != null) {
bMapManager.destroy();
bMapManager = null;
}
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (bMapManager != null) {
bMapManager.start();
}
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (bMapManager != null) {
bMapManager.stop();
}
}

完整代码:

package com.example.baiduhellopoioverlay;

import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast; import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.PoiOverlay; public class MainActivity extends MapActivity { private MapView mapView;
private BMapManager bMapManager;
private String keyString = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A";
private MKSearch mkSearch; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bMapManager = new BMapManager(MainActivity.this);
bMapManager.init(keyString, new MKGeneralListener() {
@Override
public void onGetPermissionState(int arg0) {
// TODO Auto-generated method stub
} @Override
public void onGetNetworkState(int arg0) {
// TODO Auto-generated method stub
if (arg0 == 300) {
Toast.makeText(MainActivity.this, "输入的key有误,请核实!", 1)
.show();
}
}
});
initMapActivity(bMapManager); //初始化地图引擎
mapView = (MapView) findViewById(R.id.bmapView);
mkSearch = new MKSearch();
mkSearch.init(bMapManager, new MySearchListener()); // 关键词,中心点,范围半径
mkSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6),
(int) (116.404 * 1E6)), 5000);
} private class MySearchListener implements MKSearchListener { @Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetPoiDetailSearchResult(int arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetPoiResult(MKPoiResult result, int type, int isError) {
// TODO Auto-generated method stub
if(result == null){
return;
}
PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView);
poiOverlay.setData(result.getAllPoi());
mapView.getOverlays().add(poiOverlay);
mapView.invalidate();
} @Override
public void onGetRGCShareUrlResult(String arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub } @Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub }
} @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (bMapManager != null) {
bMapManager.destroy();
bMapManager = null;
}
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (bMapManager != null) {
bMapManager.start();
}
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (bMapManager != null) {
bMapManager.stop();
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
} }

运行结果:

Android百度地图开发(三)范围搜索的更多相关文章

  1. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  2. android 百度地图开发实例(转载)

    因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...

  3. C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息

    原文:C#的百度地图开发(三)依据坐标获取位置.商圈及周边信息 我们得到了百度坐标,现在依据这一坐标来获取相应的信息.下面是相应的代码 public class BaiduMap { /// < ...

  4. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

  5. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

        近期做android百度地图,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--仅仅显示网格而没有显示地图,网 ...

  6. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 加入 Android 百度依赖包: 1  key:  <!--        开发人员 key --> <meta-dat ...

  7. Android 百度地图开发之一(Hello BaiDu Map)

    之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...

  8. android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索

    最近跟着百度地图API学地图开发,先是学了路径搜索,对于已知坐标的两点进行驾车.公交.步行三种路径的搜索(公交路径运行没效果,待学习中),后来又 学了定位功能,能够获取到自己所在位置的经纬度,但当将两 ...

  9. Android 百度地图开发(三)

    实现比例尺功能和替换自带的缩放组件 ScaleView是比例尺控件.ZoomControlView是缩放控件,MainActivity就是我们的主界面了 先看下ZoomControlView类.代码例 ...

  10. Android百度地图开发(一)之初体验

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...

随机推荐

  1. 【原创】如何在Android中为TextView动态设置drawableLeft等

    如何在Android中为TextView动态设置drawableLeft等   两种方式:   方式1:手动设置固有边界 Drawable drawable = getResources().getD ...

  2. awk案例学习

    awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理.awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取 ...

  3. Volley HTTP库系列教程(5)自定义一个Volley请求

    Implementing a Custom Request Previous  Next This lesson teaches you to Write a Custom Request parse ...

  4. [HDOJ3466]Proud Merchants(贪心+01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466 n个商人,每个商人有一个物品,物品有价格p.价值v还有一个交易限制q.q的意义是假如你现在拥有的 ...

  5. javascirpt历史澄清误解基本概念特点编程语言web2.0网页javascript - javascirpt知识大全

    目录1历史 2澄清误解 3基本概念 4特点 5与Java的不同 6开发工具 历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C减减(C-minus-minus,简称Cmm)的嵌入式脚 ...

  6. java获取系统指定时间年月日

    java获取系统指定时间年月日 private String setDateTime(String falg) { Calendar c = Calendar.getInstance(); c.set ...

  7. Android App接入微信开放平台注意事项

    一.Android第三方应用接入微信开放平台的注意事项: 1. 到微信开放平台官网申请正式的AppID(需通过审核),要填写包名.app签名的md5值.至于如何获取app签名信息,官方提供签名包apk ...

  8. 线程——QQ邮件发送

    一.造一个QQ邮件发送的窗体 二.开始编写关于邮件发送的代码,以及当点发送按钮的时候,给发送按钮单独造了一个新的线程.这样如果发送的附件太多的话,如果不给发送按钮造新的线程,便会卡住,但是如果给发送按 ...

  9. SecureCRT介绍、安装、使用

    简介 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. SecureCRT支持SSH,同时支持Telnet和 ...

  10. POJ 3225 (线段树 区间更新) Help with Intervals

    这道题搞了好久,其实坑点挺多.. 网上找了许多题解,发现思路其实都差不多,所以就不在重复了. 推荐一篇比较好的题解,请戳这. 另外,如果因为可能要更新多次,但最终查询只需要一次,所以没有写pushup ...