鉴于百度地图不计其数的poi兴趣点 很多app在开发的时候都会选择调用百度地图资源

//主界面Activity
package com.zhuang.search;import java.util.ArrayList;
import java.util.List;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.Polyline;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.overlayutil.OverlayManager;
import com.baidu.mapapi.search.core.CityInfo;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiDetailSearchOption;
import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;
import com.baidu.mapapi.search.core.SearchResult;
import android.os.Bundle;
import android.widget.Toast;
import android.app.Activity;public class MainActivity extends Activity implements OnGetPoiSearchResultListener{/*** POI周边检索*/
private PoiSearch Mpoisearch;
private MapView mapView;
private BaiduMap Mmap;
private double latitude,longitude;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();//开始poi检索//参数 keyword("关键字").radius(半径).location(new LatLng(坐标)))Mpoisearch.searchNearby(new PoiNearbySearchOption().keyword("养生").radius(5000).location(new LatLng(latitude,longitude)));}private void initView() {mapView  = (MapView) findViewById(R.id.bmapView);Mmap  = mapView.getMap();latitude = Double.parseDouble(SPUtils.getString(MainActivity.this, "latitude",""));longitude =  Double.parseDouble(SPUtils.getString(MainActivity.this, "longitude",""));//获取poi检索实例Mpoisearch = PoiSearch.newInstance();//实现检索监听Mpoisearch.setOnGetPoiSearchResultListener(this);}/********************* POI检索结果的方法 ***********************/  public void onGetPoiResult(PoiResult result) {if (result == null|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {Toast.makeText(MainActivity.this, "未找到结果", Toast.LENGTH_LONG).show();return;}if (result.error == SearchResult.ERRORNO.NO_ERROR) {//清除数据Mmap.clear();//添加poi覆盖物 并添加覆盖物的监听事件MyPoiOverlay overlay = new MyPoiOverlay(Mmap);Mmap.setOnMarkerClickListener(overlay);         overlay.setResult(result);overlay.addToMap();overlay.zoomToSpan();return;}if (result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD) {// 当输入关键字在本市没有找到,但在其他城市找到时,返回包含该关键字信息的城市列表String strInfo = "在";for (CityInfo cityInfo : result.getSuggestCityList()) {strInfo += cityInfo.city;strInfo += ",";}strInfo += "找到结果";Toast.makeText(MainActivity.this, strInfo, Toast.LENGTH_LONG).show();}}public void onGetPoiDetailResult(PoiDetailResult result) {if (result.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(MainActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, result.getName() + ":" + result.getAddress(), Toast.LENGTH_SHORT).show();}}//自定义poi检索覆盖物private class MyPoiOverlay extends OverlayManager {private PoiResult result;private boolean flag = false;public void setResult(PoiResult result) {   this.result = result;}public MyPoiOverlay(BaiduMap baiduMap) {super(baiduMap);}@Overridepublic boolean onMarkerClick(Marker marker) {onClick(marker.getZIndex());return true;}public boolean onClick(int index) {PoiInfo poi = result.getAllPoi().get(index);//if(poi.hasCaterDetails){Mpoisearch.searchPoiDetail((new PoiDetailSearchOption()).poiUid(poi.uid));// }return true;}@Overridepublic boolean onPolylineClick(Polyline arg0) {return false;}@Overridepublic List<OverlayOptions> getOverlayOptions() {List<OverlayOptions> ops = new ArrayList<OverlayOptions>();List<PoiInfo> pois = result.getAllPoi();OverlayOptions op = null;BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_green);BitmapDescriptor bitmap2 = BitmapDescriptorFactory.fromResource(R.drawable.icon_red);for (int i = 0; i < pois.size(); i++) {if(flag){op = new MarkerOptions().position(pois.get(i).location).icon(bitmap);   }else{op = new MarkerOptions().position(pois.get(i).location).icon(bitmap2);}   ops.add(op);        Mmap.addOverlay(op).setZIndex(i);}return ops;}}@Overrideprotected void onPause() {mapView.onPause();super.onPause();}@Overrideprotected void onResume() {mapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {MyApp app = (MyApp) getApplication();app.mLocClient.stop();mapView.onDestroy();mapView = null;super.onDestroy();}
}
//Application
package com.zhuang.search;import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.SDKInitializer;import android.app.Application;public class MyApp extends Application {public LocationClient mLocClient;@Overridepublic void onCreate() {super.onCreate();//初始化百度地图SDKInitializer.initialize(getApplicationContext());// 开始定位// 创建定位客户端mLocClient = new LocationClient(getApplicationContext());// 注册定位的监听,获取定位的结果mLocClient.registerLocationListener(new BDLocationListener() {// 获取定位结果@Overridepublic void onReceiveLocation(BDLocation location) {//将定位的经纬度存入SharedPreferences// 纬度SPUtils.putString(getApplicationContext(), "latitude", String.valueOf(location.getLatitude()));// 经度SPUtils.putString(getApplicationContext(), "longitude", String.valueOf(location.getLongitude()));}});// 对客户端进行各种配置// 创建定位客户端的选项LocationClientOption options = new LocationClientOption();options.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式options.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02options.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000msoptions.setIsNeedAddress(true);// 返回的定位结果包含地址信息options.setNeedDeviceDirect(true);// 返回的定位结果包含手机机头的方向mLocClient.setLocOption(options);// 开始定位mLocClient.start();}
}
//sp工具类
package com.zhuang.search;import android.content.Context;
import android.content.SharedPreferences;public class SPUtils {private static SharedPreferences sharedPreferences;// 存double(上下文,key,value)public static void putString(Context context, String key, String value) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences("config",Context.MODE_PRIVATE);}sharedPreferences.edit().putString(key, value).commit();}// 取public static String getString(Context context, String key, String defValue) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences("config",Context.MODE_PRIVATE);}return sharedPreferences.getString(key, defValue);}
}

百度地图POI周边检索/自定义覆盖物相关推荐

  1. 基于指定文本的百度地图poi城市检索的使用(思路最重要)

    (转载请注明出处哦)具体的百度地图权限和apikey配置以及基础地图的配置不叙述,百度地图定位可以看这个链接的http://blog.csdn.net/heweigzf/article/details ...

  2. 百度地图获取行政区域以及自定义显示网格

    目录 1 问题描述 2 独立显示区域 3 自定义网格 4 显示自定义网格 5 延展 6 参考文献 1 问题描述 (1) 通过百度地图或者高德地图只展示某一个行政区域,例如整个地图只展示郑州市金水区,其 ...

  3. java安卓百度地图查找便利店_Android 百度地图POI搜索功能实例代码

    在没介绍正文之前先给大家说下poi是什么意思. 由于工作的关系,经常在文件中会看到POI这三个字母的缩写,但是一直对POI的概念和含义没有很详细的去研究其背后代表的意思.今天下班之前,又看到了POI这 ...

  4. 百度地图POI数据获取

    转载自:https://blog.csdn.net/baidu_26646129/article/details/80464447 本文主要介绍百度地图POI数据获取:从百度地图得到POI数据,以js ...

  5. 百度地图api周边搜索功能

    利用百度地图api周边搜索功能,实现点击切换周边类型显示 <!DOCTYPE html> <html lang="zh-CN"> <head>& ...

  6. 百度地图使用折线、多边形覆盖物绘制或编辑行政区域

    百度地图开发常用网站 1.百度地图开放平台 http://lbsyun.baidu.com/ 2.百度地图 Javascript API JavaScript API v3.0 http://lbsy ...

  7. 2018全国百度地图poi数据

    百度地图POI数据获取及后续处理的过程.POI数据获取及后续处理的过程主要包含了两个大的步骤,即 POI数据获取:从百度地图得到POI数据,以json格式保存: 数据的EXCEL导入:将json格式保 ...

  8. Android百度地图(六)自定义导航路线规划

    Android百度地图(六)自定义导航路线规划 兴奋加激动... 本文代码在http://blog.csdn.net/xyzz609/article/details/51959767的基础上进一步修改 ...

  9. 百度地图POI数据采集方案以及开发环境搭建

    #获取百度地图POI数据一(详解百度返回的POI数据) http://lbsyun.baidu.com/index.php?title=webapi数据量标准可以参看 http://lbsyun.ba ...

最新文章

  1. QT制作窗口切换的小程序
  2. jQuery.Validate 验证
  3. 一天1个机器学习知识点(五)
  4. RuntimeError at /admin 解决办法(亲测)
  5. CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
  6. TLS/SSL协议工作原理
  7. 【WebRTC---入门篇】(一)WebRTC整体架构
  8. Selenium 与PhantomJS
  9. bean type not found
  10. FatFs - Generic FAT Filesystem Module
  11. foxmail7 BUILD093之后再无Foxmail
  12. 关于EIGRP路由汇总问题
  13. 计算机无法卸载软件,电脑安装的软件无法卸载怎么办?
  14. 结直肠癌呈年轻化趋势,与肠道微生物群密不可分
  15. 最优化方法-黄金分割法及Matlab实现
  16. iOS小技巧11-Xcode中相对路径和绝对路径的使用
  17. Pandas dataframe 遇到ix报错问题
  18. 【狂神说Java】JavaWeb入门到实战--Maven详解
  19. SES将在上海建设全球产能最大的锂金属电池工厂
  20. 笔记整理——使用openssl编程

热门文章

  1. 计算机d盘打开不显示,为何我打开电脑D盘显示不出任何东西来?
  2. 三极管开关电路工作原理解析及三极管的放大区、饱和区、截止区
  3. opencv-python运用模板寻找黑白子,并计算出两类棋子各自最大距离,并用直线连接,用霍夫变换检测棋盘黑线,用直线画出
  4. mysql 查询排除字段_sql 查询排除一个字段的其他字段
  5. 当代大学生十大遗憾排行榜,最后一条90%的人都中枪!
  6. <hy-trip>项目记录
  7. Activiti工作流驳回操作
  8. SAP 公司间交易简介和配置
  9. 数据挖掘:香水电商销售策略分析
  10. WIN10下Allegro卡死的问题解决