百度设微信无响应关闭或等待是否关闭怎么回事

Android应用中使用百度地图API之POI(三) - 推酷
Android应用中使用百度地图API之POI(三)
先看运行后的图吧:
POI(Point of Interest),中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等 &详细:
主要应用&MKSearch 类:
com.baidu.mapapi.search
类 MKSearch
java.lang.Object
com.baidu.mapapi.search.MKSearch
public class MKSearch
extends java.lang.Object
用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索
限定符和类型
字段和说明
static int
公交检索策略常量:不含地铁
static int
公交检索策略常量:时间优先
static int
公交检索策略常量:最少换乘
static int
公交检索策略常量:最少步行距离
static int
驾车策略: 躲避拥堵
static int
驾乘检索策略常量:最短距离
static int
驾乘检索策略常量:较少费用
static int
驾乘检索策略常量:时间优先
static int
poi详细信息检索页面
static int
多关键字范围搜索、周边搜索poi列表
static int
范围搜索、周边搜索poi列表
static int
static int
城市内搜索poi列表
限定符和类型
方法和说明
(java.lang.String city, java.lang.String busLineUid)
公交路线详细信息搜索 异步函数,返回结果在MKSearchListener里的onGetBusDetailResult方法通知
销毁MKSearch 模块 , 当不再使用Search 功能时,需要调用此函数
(java.lang.String startCity,
start, java.lang.String endCity,
驾乘路线搜索.
(java.lang.String startCity,
start, java.lang.String endCity,
end, java.util.List&& wpNodes)
驾车路线搜索,可设置途经点 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
(java.lang.String strAddr, java.lang.String city)
根据地址名获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
返回每页容量
获取指定页的的poi结果.
( bmapMan,
初使化,使用完成后,请调用 destroy 函数释放资源
(java.lang.String uid)
poi详细信息检索
(java.lang.String poiUid)
获取POI信息共享短url.
( location, java.lang.String name, java.lang.String address)
获取地址信息共享短URL.
(java.lang.String key,
根据范围和检索词发起范围检索.
(java.lang.String city, java.lang.String key)
城市poi检索.
(java.lang.String key,
pt, int radius)
根据中心点、半径与检索词发起周边检索.
根据地理坐标点获取地址信息 异步函数,返回结果在MKSearchListener里的onGetAddrResult方法通知
(int policy)
设置驾车路线规划策略.
设置每页容量.
(int policy)
设置路线规划策略.
(java.lang.String key, java.lang.String city)
联想词检索,根据模糊的不完备的检索词返回精确的建议搜索词 异步函数,返回结果在MKSearchListener里的onGetSuggestionResult方法通知
(java.lang.String city,
公交路线搜索.
(java.lang.String startCity,
start, java.lang.String endCity,
步行路线搜索.
通过上面的阅读应该有所了解了吧,直接代码了。。
这里的代码和前面(
)的代码变化不大:
MainActivity.java
package com.majianjie.
import java.util.ArrayL
import java.util.L
import android.app.A
import android.app.AlertD
import android.content.DialogI
import android.graphics.B
import android.graphics.drawable.D
import android.os.B
import android.view.LayoutI
import android.view.M
import android.view.MenuI
import android.view.V
import android.view.View.MeasureS
import android.view.W
import android.widget.AdapterV
import android.widget.AdapterView.OnItemSelectedL
import android.widget.ArrayA
import android.widget.B
import android.widget.ImageV
import android.widget.S
import android.widget.TextV
import android.widget.T
import com.baidu.location.BDL
import com.baidu.location.BDLocationL
import com.baidu.location.LocationC
import com.baidu.location.LocationClientO
import com.baidu.mapapi.BMapM
import com.baidu.mapapi.MKGeneralL
import com.baidu.mapapi.map.LocationD
import com.baidu.mapapi.map.MKE
import com.baidu.mapapi.map.MKMapViewL
import com.baidu.mapapi.map.MapC
import com.baidu.mapapi.map.MapP
import com.baidu.mapapi.map.MapV
import com.baidu.mapapi.map.MyLocationO
import com.baidu.mapapi.map.PoiO
import com.baidu.mapapi.map.PopupClickL
import com.baidu.mapapi.map.PopupO
import com.baidu.mapapi.search.MKAddrI
import com.baidu.mapapi.search.MKBusLineR
import com.baidu.mapapi.search.MKDrivingRouteR
import com.baidu.mapapi.search.MKPoiI
import com.baidu.mapapi.search.MKPoiR
import com.baidu.mapapi.search.MKS
import com.baidu.mapapi.search.MKSearchL
import com.baidu.mapapi.search.MKShareUrlR
import com.baidu.mapapi.search.MKSuggestionR
import com.baidu.mapapi.search.MKTransitRouteR
import com.baidu.mapapi.search.MKWalkingRouteR
import com.api.basestruct.GeoP
import com.example.baidumap.R;
public class MainActivity extends Activity {
//声明控件
private static StringBuilder sb = new StringBuilder();
private int i=1;
private Toast mToast=
private BMapManager mBMapManager=
private MapView mMapView =
//MapView 是地图主控件
private MapController mMapController =//用MapController完成地图控制
private LocationClient mLocC
public LocationData mLocData =
private LocationOverlay myLocationOverlay =//定位图层
private boolean isRequest =//是否手动触发请求定位
private boolean isFirstLoc =//是否首次定位
private PopupOverlay mPopupOverlay
=//弹出泡泡图层,浏览节点时使用
private View viewCache=
public BDLocation location = new BDLocation();
&span style=&color:#ff6666;&&
private MKSearch mMKSearch =
private List&String&
private ArrayAdapter& String&
private String poiName=&&;&/span&
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//**使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化
mBMapManager = new BMapManager(this);
//第一个参数是API key,
第二个参数是常用事件监听,用来处理通常的网络错误,授权验证错误等,你也可以不添加这个回调接口
mBMapManager.init(&LDtH1sVwr7kygaF0aTqaVwWU&, new MKGeneralListener() {
//授权错误的时候调用的回调函数
public void onGetPermissionState(int iError) {
if (iError ==
MKEvent.ERROR_PERMISSION_DENIED) {
showToast(&API KEY错误, 请检查!&);
//一些网络状态的错误处理回调函数
public void onGetNetworkState(int iError) {
if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplication(), &您的网络出错啦!&, Toast.LENGTH_LONG).show();
//单击事件
//* 显示Toast消息
private void showToast(String msg){
if(mToast == null){
mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
mToast.setText(msg);
mToast.setDuration(Toast.LENGTH_SHORT);
mToast.show();
private void click() {
request.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
requestLocation();
protected void onResume() {
//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onResume();
mBMapManager.start();//重新启动
mMKSearch.init(mBMapManager, new MySearchListener());
super.onResume();
protected void onPause() {
//MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
mMapView.onPause();
super.onPause();
private void init() {
//使用自定义的title,注意顺序
setContentView(R.layout.activity_main);
//activity的布局
//这里是添加自己定义的titlebtn.xml
//通过id找到他们
mMapView = (com.baidu.mapapi.map.MapView) findViewById(R.id.bmapView);
mMapController=mMapView.getController(); //获取地图控制器
mMapController.enableClick(true);
//设置地图是否响应点击事件
request=(Button)findViewById(R.id.request);
viewCache = LayoutInflater.from(this).inflate(R.layout.pop_layout, null);
mPopupOverlay= new PopupOverlay(mMapView, new PopupClickListener() {// * 点击弹出窗口图层回调的方法
public void onClickedPopup(int arg0) {
//隐藏弹出窗口图层
mPopupOverlay.hidePop();
mMapController.enableClick(true);
设置地图是否响应点击事件
mMapController.setZoom(12);
// * 设置地图缩放级别
mMapView.setBuiltInZoomControls(true);
// * 显示内置缩放控件
mMapView.setTraffic(true);
&span style=&color:#ff6666;&&
mMKSearch = new MKSearch();
detail=(Spinner)findViewById(R.id.detail);
poi = new ArrayList&String&();
poi.add(&请选择&);
poi.add(&ATM&);
poi.add(&旅馆&);
poi.add(&餐厅&);
poi.add(&公园&);
poi.add(&药店&);
poi.add(&图书馆&);
poi.add(&景点&);
poi.add(&医院&);
poi.add(&KFC&);
poi.add(&学校&);
poi.add(&超市&);
adapter=new ArrayAdapter&String&(this, android.R.layout.simple_spinner_item,poi);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
detail.setAdapter(adapter);
detail.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView&?& parent, View v,int position, long id) {
poiName=(parent.getSelectedItem().toString());
if(poiName.equals(&请选择&)){}
mMKSearch.init(mBMapManager, new MySearchListener());//注意,MKSearchListener只支持一个,以最后一次设置为准
mMKSearch.poiSearchNearBy(poiName, new GeoPoint((int) (39.907004 * 1E6), (int) (119.54048 * 1E6)), 5000);
public void onNothingSelected(AdapterView&?& arg0) {}
mLocData = new LocationData();
mLocClient = new LocationClient(getApplicationContext());
定位SDK的核心类
//实例化定位服务,LocationClient类必须在主线程中声明
mLocClient.registerLocationListener(new BDLocationListenerImpl());//注册定位监听接口
* 设置定位参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); //打开GPRS
option.setAddrType(&all&);//返回的定位结果包含地址信息
option.setCoorType(&bd09ll&);//返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000); //设置发起定位请求的间隔时间为5000ms
option.disableCache(false);//禁止启用缓存定位
//option.setPoiNumber(5); //最多返回POI个数
//option.setPoiDistance(1000); //poi查询距离
//option.setPoiExtraInfo(true);
//是否需要POI的电话和地址等详细信息
mLocClient.setLocOption(option);
mLocClient.start();
// 调用此方法开始定位
myLocationOverlay = new LocationOverlay(mMapView);//定位图层初始化
//将定位数据设置到定位图层里
myLocationOverlay.setMarker(getResources().getDrawable(R.drawable.set));
//添加定位图层
mMapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableCompass();
//更新图层数据执行刷新后生效
mMapView.refresh();
//准备要添加的Overlay
double mLat1 = 39.910159;
double mLon1 = 119.544697;
// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));
//准备overlay图像数据,根据实情情况修复
Drawable mark= getResources().getDrawable(R.drawable.set);
//用OverlayItem准备Overlay数据
OverlayItem item1 = new OverlayItem(p1,&item1&,&item1&);
//使用setMarker()方法设置overlay图片,如果不设置则使用构建ItemizedOverlay时的默认设置
//创建IteminizedOverlay
CustomItemizedOverlay itemOverlay = new CustomItemizedOverlay(mark, mMapView);
//将IteminizedOverlay添加到MapView中
mMapView.getOverlays().clear();
mMapView.getOverlays().add(itemOverlay);
//现在所有准备工作已准备好,使用以下方法管理overlay.
//添加overlay, 当批量添加Overlay时使用addItem(List&OverlayItem&)效率更高
itemOverlay.addItem(item1);
//删除overlay .
//itemOverlay.removeItem(itemOverlay.getItem(0));
//mMapView.refresh();
//清除overlay
// itemOverlay.removeAll();
// mMapView.refresh();
mMapView.refresh();
// mMapController.setCenter(p1);
mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {
// * 地图移动完成时会回调此接口 方法
public void onMapMoveFinish() {
//showToast(&地图移动完毕!&);
//* 地图加载完毕回调此接口方法
public void onMapLoadFinish() {
showToast(&地图载入完毕!&);
地图完成带动画的操作(如: animationTo())后,此回调被触发
public void onMapAnimationFinish() {
//当调用过 mMapView.getCurrentMap()后,此回调会被触发
可在此保存截图至存储设备
public void onGetCurrentMap(Bitmap arg0) {
//* 点击地图上被标记的点回调此方法
public void onClickMapPoi(MapPoi arg0) {
if (arg0 != null){
showToast(arg0.strText);
class MySearchListener implements MKSearchListener{
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {}
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {}
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {}
public void onGetPoiDetailSearchResult(int arg0, int arg1) {}
public void onGetPoiResult(MKPoiResult result, int type, int iError) {
if (result == null) {
// 清除地图上已有的所有覆盖物
mMapView.getOverlays().clear();
// PoiOverlay是baidu map api提供的用于显示POI的Overlay
PoiOverlay poioverlay = new PoiOverlay(MainActivity.this, mMapView);
// 设置搜索到的POI数据
poioverlay.setData(result.getAllPoi());
// 在地图上显示PoiOverlay(将搜索到的兴趣点标注在地图上)
mMapView.getOverlays().add(poioverlay);
if(result.getNumPois() & 0) {
// 设置其中一个搜索结果所在地理坐标为地图的中心
MKPoiInfo poiInfo = result.getPoi(0);
mMapController.setCenter(poiInfo.pt);
// sb.append(&共搜索到&).append(result.getNumPois()).append(&个POI\n&);
sb.append(&POI信息:&).append(&\n&);
// 遍历当前页返回的POI(默认只返回10个)
for (MKPoiInfo poiInfo : result.getAllPoi()) {
sb.append(i+& 名称:&).append(poiInfo.name).append(&\n&);
sb.append(&地址:&).append(poiInfo.address).append(&\n&);
// 通过AlertDialog显示当前页搜索到的POI
new AlertDialog.Builder(MainActivity.this)
.setTitle(&搜索到的POI信息&)
.setMessage(sb.toString())
.setPositiveButton(&关闭&, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
sb.delete(0,sb.length());
}).create().show();
public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1,int arg2) {}
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {}
@Override /** * 公交换乘路线搜索结果 *
* @param result 搜索结果 * @param iError 错误号(0表示正确返回) */
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}
/** * 步行路线搜索结果 *
* @param result 搜索结果 * @param iError 错误号(0表示正确返回) */
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
private void CreateMenu(Menu menu){
MenuItem mnu1 =menu.add(0,0,0,&显示卫星地图&);
mnu1.setAlphabeticShortcut('a');//设置快捷键
//mnu1.serIcon(R.drawable.icon);//设置图片
MenuItem mnu2 =menu.add(0,1,1,&显示街道地图&);
mnu2.setAlphabeticShortcut('b');//设置快捷键
//mnu1.serIcon(R.drawable.icon);//设置图片
MenuItem mnu3 =menu.add(0,2,2,&3D地图&);
mnu3.setAlphabeticShortcut('c');//设置快捷键
//mnu1.serIcon(R.drawable.icon);//设置图片
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == 0){
mMapView.setSatellite(true);
//设置显示为卫星地图:
mMapView.setTraffic(false);
}else if(item.getItemId() == 1){
mMapView.setTraffic(true);
//显示街道地图
mMapView.setSatellite(false);
}else if(item.getItemId() == 2){
//mMapView.se
public class BDLocationListenerImpl implements BDLocationListener {
* 接收异步返回的定位结果,参数是BDLocation类型参数
public void onReceiveLocation(BDLocation location) {
if (location == null) {
MainActivity.this.location =
mLocData.latitude = location.getLatitude();
mLocData.longitude = location.getLongitude();
//如果不显示定位精度圈,将accuracy赋值为0即可
mLocData.accuracy = location.getRadius();
mLocData.direction = location.getDerect();
//将定位数据设置到定位图层里
myLocationOverlay.setData(mLocData);
//更新图层数据执行刷新后生效
mMapView.refresh();
if(isFirstLoc || isRequest){
//将给定的位置点以动画形式移动至地图中心
mMapController.animateTo(new GeoPoint(
(int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)));
showPopupOverlay(location);
//载入时候就弹出
isRequest =
isFirstLoc =
// 接收异步返回的POI查询结果,参数是BDLocation类型参数
public void onReceivePoi(BDLocation poiLocation) {
private void requestLocation() {
isRequest =
if(mLocClient != null && mLocClient.isStarted()){
showToast(&正在定位......&);
mLocClient.requestLocation();
//继承MyLocationOverlay重写dispatchTap方法
private class LocationOverlay extends MyLocationOverlay{
public LocationOverlay(MapView arg0) {
super(arg0);
* 在“我的位置”坐标上处理点击事件。
protected boolean dispatchTap() {
//点击我的位置显示PopupOverlay
showPopupOverlay(location);
return super.dispatchTap();
public void setMarker(Drawable arg0) {
super.setMarker(arg0);
protected void onDestroy() {
//MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
mMapView.destroy();
//退出应用调用BMapManager的destroy()方法
if(mBMapManager != null){
mBMapManager.destroy();
mBMapManager =
//退出时销毁定位
if (mLocClient != null){
mLocClient.stop();
super.onDestroy();
//* 显示弹出窗口图层PopupOverlay
private void showPopupOverlay(BDLocation location){
TextView popText = ((TextView)viewCache.findViewById(R.id.location_tips));
popText.setText(&[我的位置]\n& + location.getAddrStr());
mPopupOverlay.showPopup(getBitmapFromView(popText),
new GeoPoint((int)(location.getLatitude()*1e6), (int)(location.getLongitude()*1e6)),
// * 将View转换成Bitmap的方法
public static Bitmap getBitmapFromView(View view) {
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
有关性能的优化,这里不多讲解,正在学习中。。。/呵呵
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致如何自动或手动关闭未响应程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何自动或手动关闭未响应程序
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
我的手机内存卡说此设备已经停止响应.什么意思啊?我的手机内存卡说此设备已经停止响应,复制不了东西进去 一复制就说此设备已经停止响应, 或者断开
互撸娃_杜挛6
一、试着从内存卡往外复制看能否成功.二、把内存卡取出用读卡器试一试.三、有条件可换一个数据据试试.
为您推荐:
扫描下载二维码

我要回帖

更多关于 网页无响应是怎么回事 的文章

 

随机推荐