Android 高德地图的定位,周边搜索

这篇博客介绍了如何在Android应用中实现高德地图的定位和周边搜索功能。首先,通过官方示例详细讲解了定位的实现,包括监听和定位方法,列举了定位返回码的含义。接着,讨论了周边搜索功能,提到了搜索功能所依赖的条件和相关监听回调,同时列出了搜索返回码的说明。最后,提供了部分关键代码片段作为参考。
摘要由CSDN通过智能技术生成

刚弄完这两个功能,当然是结合官网例子实现的。效果还行,稍作优化便可整合到app使用。在这里做一下总结,及说明下我的思路。

刚开始上手感觉比较乱学起来也比较累,方法,类太多,直接复制各种错,还不知道为什么这么做。现在我们一起交流下实现的思路:

1:定位:这是所有地图功能实现的基础,所以不管要实现诸如周边搜索啊,导航啊什么的都需要基于定位。
如何定位:官网上例子也很详细,主要是实现几个监听,并实现方法:

    aMap.setLocationSource(this);// 设置定位监听
            //绑定监听
            mapLocationClient.setLocationListener(this);
            //开启定位
            mapLocationClient.startLocation();

监听的实现方法:

public void onLocationChanged(AMapLocation aMapLocation)

定位实现:

//激活定位的重写
public void activate(OnLocationChangedListener onLocationChangedListener)
//取消定位的重写
public void deactivate()

定位成功与否会有返回码,返回码对照如下(来自官网):

0 定位成功。
1 一些重要参数为空,如context;请对定位传递的参数进行非空判断。
2 定位失败,由于仅扫描到单个wifi,且没有基站信息。
3 获取到的请求参数为空,可能获取过程中出现异常。
4 请求服务器过程中的异常,多为网络情况差,链路不通导致,请检查设备网络是否通畅。
5 返回的XML格式错误,解析失败。
6 定位服务返回定位失败,如果出现该异常,请将errorDetail信息通过API@autonavi.com反馈给我们。
7 KEY建权失败,请仔细检查key绑定的sha1值与apk签名sha1值是否对应。
8 Android exception通用错误,请将errordetail信息通过API@autonavi.com反馈给我们。
9 定位初始化时出现异常,请重新启动定位。
10 定位客户端启动失败,请检查AndroidManifest.xml文件是否配置了APSService定位服务
11 定位时的基站信息错误,请检查是否安装SIM卡,设备很有可能连入了伪基站网络。
12 缺少定位权限,请在设备的设置中开启app的定位权限。

2:搜索,周边搜索 :有了定位,便有了搜索里面的要求的条件(经纬度等),然后就可以慢慢实现功能了。
搜索功能靠一下方法和监听:

PoiSearch.Query query=PoiSearch.Query(keyWord,type,city);
PoiSearch poiSearch = new PoiSearch(this,query);
poiSearch.setOnPoiSearchListener(this);//设置回调数据的监听器
poiSearch.searchPOIAsyn();//开始搜索

监听的回调方法:

public void onPoiSearched(PoiResult poiResult, int i) 
public void onPoiItemSearched(PoiItem poiItem, int i)

搜索返回码对照(来自官网)本文最后:

实例:
功能介绍:定位,周边搜索(可选择搜索范围:1000-5000米(spinner下拉实现))

代码:
清单文件:

<!-- 用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!-- 用于访问网络,网络定位需要上网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 用于读取手机当前的状态 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--与activity标签同级-->
<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你的key值" />
        <service android:name="com.amap.api.location.APSService" />

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/search_edit"
        android:hint="输入关键字"
        android:singleLine="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/map" />
    <Spinner
        android:id="@+id/juli"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/map"
        android:layout_toEndOf="@+id/search_button">

    </Spinner>
    <Button
        android:id="@+id/search_button"
        android:text
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值