高德地图--获取poi数据
根据输入的关键字进行Poi搜索,点击搜索到的结果列表中的一项,返回显示和定位页,定位并显示该地址的详细信息;
/* * 售后地图 * Created by wangchm on 2017/4/25 0031. * */ public class SaleMapActivity extends AppCompatActivity implements GeocodeSearch.OnGeocodeSearchListener {private static final String TAG = "SaleMapActivity";@BindView(R.id.iv_mapBack)ImageView ivMapBack;@BindView(R.id.afterSaleMap)MapView afterSaleMap;@BindView(R.id.iv_saleSear)ImageView ivSaleSear;@BindView(R.id.rl_sale_search)RelativeLayout rlSaleSearch;@BindView(R.id.tv_pointName)TextView tvPointName;@BindView(R.id.tv_distance)TextView tvDistance;@BindView(R.id.iv_location)ImageView ivLocation;@BindView(R.id.tv_location)TextView tvLocation;@BindView(R.id.ll_location)LinearLayout llLocation;@BindView(R.id.iv_phone)ImageView ivPhone;@BindView(R.id.tv_phone)TextView tvPhone;@BindView(R.id.ll_phone)LinearLayout llPhone;@BindView(R.id.map_bottom)LinearLayout mapBottom;AMap aMap;//声明mLocationOption对象 public AMapLocationClientOption mLocationOption = null;//声明AMapLocationClient类对象 public AMapLocationClient mLocationClient = null;private Marker geoMarker;private Marker regeoMarker;private Double lat;private Double lon;private String mCity = "";private String areaInfo="";private String adCode = "";Context mContext;private GeocodeSearch geocoderSearch;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sale_map);ButterKnife.bind(this);afterSaleMap.onCreate(savedInstanceState);mContext = SaleMapActivity.this;//初始化定位 mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听 mLocationClient.setLocationListener(mLocationListener);initAmap();}/** * * 初始化AMap对象 */ private void initAmap() {if (aMap == null) {aMap = afterSaleMap.getMap();}setUpMap();}private void setUpMap() {//初始化定位参数 mLocationOption = new AMapLocationClientOption();//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true);//设置是否只定位一次,默认为false mLocationOption.setOnceLocation(true);//设置是否强制刷新WIFI,默认为强制刷新 mLocationOption.setWifiActiveScan(true);//设置是否允许模拟位置,默认为false,不允许模拟位置 mLocationOption.setMockEnable(false);//设置定位间隔,单位毫秒,默认为2000ms // mLocationOption.setInterval(2000); //给定位客户端对象设置定位参数 mLocationClient.setLocationOption(mLocationOption);//启动定位 mLocationClient.startLocation();//重新定位时移除红气泡,再重新初始化 geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); // geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f) // .icon(BitmapDescriptorFactory.fromResource(R.drawable.cur_position))); // regeoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f) // .icon(BitmapDescriptorFactory // .defaultMarker(BitmapDescriptorFactory.HUE_RED))); regeoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_map_search)));}//声明定位回调监听器 public AMapLocationListener mLocationListener = new AMapLocationListener() {@Override public void onLocationChanged(AMapLocation amapLocation) {if (amapLocation != null) {if (amapLocation.getErrorCode() == 0) {//定位成功回调信息,设置相关消息 amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 amapLocation.getLatitude();//获取纬度 amapLocation.getLongitude();//获取经度 amapLocation.getAccuracy();//获取精度信息 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(amapLocation.getTime());df.format(date);//定位时间 amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 amapLocation.getCountry();//国家信息 amapLocation.getProvince();//省信息 mCity = amapLocation.getCity();//城市信息 amapLocation.getDistrict();//城区信息 amapLocation.getStreet();//街道信息 amapLocation.getStreetNum();//街道门牌号信息 amapLocation.getCityCode();//城市编码 adCode = amapLocation.getAdCode();//地区编码 amapLocation.getAoiName();//获取当前定位点的AOI信息 lat = amapLocation.getLatitude();lon = amapLocation.getLongitude();areaInfo = amapLocation.getProvince()+" "+amapLocation.getCity() +" "+amapLocation.getDistrict();Log.v("pcw", "lat : " + lat + " lon : " + lon+" adCode: "+adCode+","+areaInfo);Log.v("pcw", "amapLocation="+amapLocation.toString()); // etEAddr.setText(amapLocation.getAoiName()); tvPointName.setText(amapLocation.getAoiName());tvLocation.setText(amapLocation.getAddress());// 设置当前地图显示为当前位置 aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon), 16));MarkerOptions markerOptions = new MarkerOptions();markerOptions.position(new LatLng(lat, lon));markerOptions.title("当前位置");markerOptions.visible(true); // BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.location_marker)); // BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.cur_position); //设置当前位置的marker图标 ImageView imageView = new ImageView(SaleMapActivity.this);imageView.setImageResource(R.drawable.cur_position);BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(imageView);markerOptions.icon(bitmapDescriptor);aMap.addMarker(markerOptions); // mLocationListener.onLocationChanged(amapLocation); } else {//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo());Toast.makeText(mContext,amapLocation.getErrorInfo(),Toast.LENGTH_LONG).show();}}}};@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){LogUtil.d("SaleMapActivity","sdjflksdfjdlskf");if(requestCode == 1){if(resultCode == RESULT_FIRST_USER){LogUtil.d("SaleMapActivity","onActivityResult======RESULT_FIRST_USER=====");Bundle bundle1 = data.getBundleExtra("poibundle");PoiItem item = (PoiItem) bundle1.get("poi"); LatLng latLng= convertToLatLng(item.getLatLonPoint());aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));regeoMarker.setPosition(latLng);tvPointName.setText(item.getTitle());String addr = item.getProvinceName()+item.getCityName()+item.getAdName()+item.getSnippet();tvLocation.setText(addr);tvPhone.setText(item.getTel());LatLng curLatLng = new LatLng(lat,lon);float distance = AMapUtils.calculateLineDistance(curLatLng,latLng);DecimalFormat format = new DecimalFormat("0.00");tvDistance.setText("距离"+format.format(distance/1000)+"公里");}}}@OnClick({R.id.iv_mapBack, R.id.rl_sale_search, R.id.ll_phone})public void onClick(View view) {switch (view.getId()) {case R.id.iv_mapBack:finish();break;case R.id.rl_sale_search:Intent searchIntent = new Intent(SaleMapActivity.this, SearchSaleActivity.class);startActivityForResult(searchIntent,1); // startActivity(searchIntent); break;case R.id.ll_phone:break;}}public LatLng convertToLatLng(LatLonPoint point){return new LatLng(point.getLatitude(),point.getLongitude());}}
/* * 售后网点搜索 * Created by wangchm on 2017/4/25 0031. * */ public class SearchSaleActivity extends AppCompatActivity {private static final String TAG = "SearchSaleActivity";@BindView(R.id.salesearch_edit)TextField salesearchEdit;@BindView(R.id.tv_saleCancel)TextView tvSaleCancel;@BindView(R.id.lvResult)ListView lvResult;GeocodeSearch geocodeSearch;Context mContext;SearchMapAdapter adapter;List<GeocodeAddress> addrList;PoiSearch poiSearch;SearchPoiMapAdapter poiAdapter;ArrayList<PoiItem> poiItems;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_search_sale);ButterKnife.bind(this);mContext = SearchSaleActivity.this;addrList = new ArrayList<GeocodeAddress>(); salesearchEdit.addTextChangedListener(new MyTextChangeListener());lvResult.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Bundle bundle1 = new Bundle();bundle1.putParcelable("poi",poiItems.get(position));Intent backIntent = new Intent(mContext,SaleMapActivity.class);backIntent.putExtra("poibundle",bundle1);setResult(RESULT_FIRST_USER,backIntent);finish();}});}int currentPage = 1;//文本框的改变监听 class MyTextChangeListener implements TextWatcher{@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Override public void onTextChanged(CharSequence s, int start, int before, int count) {String newText = s.toString().trim(); //获取Poi数据 //构造 PoiSearch.Query 对象,通过 PoiSearch.Query(String query, String ctgr, String city) 设置搜索条件。 //keyWord表示搜索字符串,第二个参数表示POI搜索类型,二者选填其一, //cityCode表示POI搜索区域,可以是城市编码也可以是城市名称,也可以传空字符串,空字符串代表全国在全国范围内进行搜索 PoiSearch.Query query = new PoiSearch.Query(newText,"","0532");query.setPageSize(10);query.setPageNum(currentPage);//构造 PoiSearch 对象,并设置监听。 poiSearch = new PoiSearch(mContext,query);poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {@Override public void onPoiSearched(PoiResult poiResult, int i) {//通过回调接口 onPoiSearched 解析返回的结果,将查询到的 POI 以绘制点的方式显示在地图上。 if(i == 1000){if(poiResult != null && poiResult.getPois() != null && poiResult.getPois().size() != 0){poiItems = poiResult.getPois();poiAdapter = new SearchPoiMapAdapter(mContext,poiItems);lvResult.setAdapter(poiAdapter);}}}@Override public void onPoiItemSearched(PoiItem poiItem, int i) {}});//调用 PoiSearch 的 searchPOIAsyn() 方法发送请求。 poiSearch.searchPOIAsyn();}@Override public void afterTextChanged(Editable s) {}}@OnClick(R.id.tv_saleCancel)public void onClick() {} }
高德地图--获取poi数据相关推荐
- 百度高德地图全国poi数据
对于地图产品而言,某个地理位置周边的信息,称之为 POI .本文作者将简单地聊聊自己对于地图产品中POI的了解和看法. 作为一个标准的路痴,以前信奉的一句话是「地图长在嘴巴上」,到一个不熟悉的地方,多 ...
- 从高德地图获取行政区域数据
import requests key='' #从高德开发平台获取自己的key值 def get_districts(key,adcode): #adcode 字符串格式url='https://re ...
- 高德地图获取所在城市POI数据
由于小论文方向为电动汽车的路径规划,所以需要用到充电站的数据,因此需要从高德地图上爬充电站数据.本文学习自这篇文章. 高德有一个开放平台,点击进入,注册(登录)(有了账号之后返回首页)-控制台-应用管 ...
- 腾讯,百度,高德地图兴趣点(POI)的获取以及查询,逆解析解析
1.POI数据介绍 POI数据介绍 POI是"Point of Interest"的缩写,中文可以翻译为"兴趣点".POI数据会包含各种信息,如前面提到的名称. ...
- Java从高德地图获取全国地铁站数据
Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...
- java中从高德地图爬取数据
最近一个人负责公司的一个app项目开发,需要从高德地图爬取杭州市全部的超市信息,放入mongodb的数据库中.做地理位置查询.(mongodb这部分有时间补上) 首先去高德地图创建一个开发者账号,获取 ...
- java 高德地图数据库_【爬虫】Java关于高德地图爬取数据
不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫 ...
- flutter集成高德地图获取位置
flutter集成高德地图获取位置 准备工作 在创建安卓应用 获取SHA1 获取当前位置 添加依赖 文件配置 build.gradle文件配置 AndroidManifest.xml配置 获取定位 准 ...
- 高德地图API POI分类编码表(mysql版)
高德地图API POI分类编码表(mysql版) 编码表更新时间:2017年8月10日 注意:本编码表为高德地图自定义编码格式,数据会根据行政区划变动不定期进行更新. sql文件下载地址: h ...
最新文章
- [Android动画] 帧动画-获取帧数( getNumberOfFrames)七
- Remix中文版 【Solidity IDE】
- 给url添加时间戳,解决浏览器缓存
- 300 行代码带你搞懂 Java 多线程!
- php中可以实现多态的是继承,PHP设计模式通过继承实现多态
- 创建一个Business partner reference extension field
- gitlab git clone 输入密码_gitlab1:部署gitlab
- mysql 开发基础系列22 SQL Model(带迁移事项)
- 渗透测试入门23之OSCP渗透测试认证经验分享
- linux鼠标改为自动聚焦,如何在Linux上取消聚焦(模糊)Pythongi GTK+3窗口
- inDesign教程,如何创建、修改和使用母版页?
- STM32正交编码器驱动电机
- 23.3.3 Web存储机制【JavaScript高级程序设计第三版】
- MySQL 入门(七)—— 视图
- 【被网上巨坑了】 win10+php5.6-ts-vc11-x64配置imagick的经历
- Z39.50 图书信息检索
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版教程】
- React 父子组件的生命周期关系(16.4版本及以后)
- 微软发布了免费的文件恢复工具!
- 从潞晨到世界名校,实习生火热招聘中