根据输入的关键字进行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数据相关推荐

  1. 百度高德地图全国poi数据

    对于地图产品而言,某个地理位置周边的信息,称之为 POI .本文作者将简单地聊聊自己对于地图产品中POI的了解和看法. 作为一个标准的路痴,以前信奉的一句话是「地图长在嘴巴上」,到一个不熟悉的地方,多 ...

  2. 从高德地图获取行政区域数据

    import requests key='' #从高德开发平台获取自己的key值 def get_districts(key,adcode): #adcode 字符串格式url='https://re ...

  3. 高德地图获取所在城市POI数据

    由于小论文方向为电动汽车的路径规划,所以需要用到充电站的数据,因此需要从高德地图上爬充电站数据.本文学习自这篇文章. 高德有一个开放平台,点击进入,注册(登录)(有了账号之后返回首页)-控制台-应用管 ...

  4. 腾讯,百度,高德地图兴趣点(POI)的获取以及查询,逆解析解析

    1.POI数据介绍 POI数据介绍 POI是"Point of Interest"的缩写,中文可以翻译为"兴趣点".POI数据会包含各种信息,如前面提到的名称. ...

  5. Java从高德地图获取全国地铁站数据

    Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...

  6. java中从高德地图爬取数据

    最近一个人负责公司的一个app项目开发,需要从高德地图爬取杭州市全部的超市信息,放入mongodb的数据库中.做地理位置查询.(mongodb这部分有时间补上) 首先去高德地图创建一个开发者账号,获取 ...

  7. java 高德地图数据库_【爬虫】Java关于高德地图爬取数据

    ​ 不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫 ...

  8. flutter集成高德地图获取位置

    flutter集成高德地图获取位置 准备工作 在创建安卓应用 获取SHA1 获取当前位置 添加依赖 文件配置 build.gradle文件配置 AndroidManifest.xml配置 获取定位 准 ...

  9. 高德地图API POI分类编码表(mysql版)

    高德地图API POI分类编码表(mysql版)   编码表更新时间:2017年8月10日   注意:本编码表为高德地图自定义编码格式,数据会根据行政区划变动不定期进行更新. sql文件下载地址: h ...

最新文章

  1. [Android动画] 帧动画-获取帧数( getNumberOfFrames)七
  2. Remix中文版 【Solidity IDE】
  3. 给url添加时间戳,解决浏览器缓存
  4. 300 行代码带你搞懂 Java 多线程!
  5. php中可以实现多态的是继承,PHP设计模式通过继承实现多态
  6. 创建一个Business partner reference extension field
  7. gitlab git clone 输入密码_gitlab1:部署gitlab
  8. mysql 开发基础系列22 SQL Model(带迁移事项)
  9. 渗透测试入门23之OSCP渗透测试认证经验分享
  10. linux鼠标改为自动聚焦,如何在Linux上取消聚焦(模糊)Pythongi GTK+3窗口
  11. inDesign教程,如何创建、修改和使用母版页?
  12. STM32正交编码器驱动电机
  13. 23.3.3 Web存储机制【JavaScript高级程序设计第三版】
  14. MySQL 入门(七)—— 视图
  15. 【被网上巨坑了】 win10+php5.6-ts-vc11-x64配置imagick的经历
  16. Z39.50 图书信息检索
  17. 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版教程】
  18. React 父子组件的生命周期关系(16.4版本及以后)
  19. 微软发布了免费的文件恢复工具!
  20. 从潞晨到世界名校,实习生火热招聘中

热门文章

  1. Python单元测试-pytest
  2. Mac删除IntelliJ IDEA
  3. 全栈必备 Log日志
  4. artDialog学习文档
  5. 一个高度不固定的div,里面的文字如何垂直居中?
  6. mysql字符集的排序规则_MySql字符集与排序规则详解
  7. 养猪管理系统——怎样科学养猪?
  8. 记一次 MSI 笔记本 GE63 播放网页视频 闪屏和随机发绿 问题解决
  9. 7-4 调查电视节目受欢迎程度 (15分)
  10. JPG格式图片怎么弄?分享两种转换图片格式方法