Android基于高德地图poi的仿微信获取位置

Android基于高德地图poi的仿微信获取位置

理性选择,适度copy

GitHub地址: AMapDemo in GitHub


1.打开页面自动定位,同时搜索周边所有poi

这里写图片描述


2.点击搜索按钮,输入关键子,获取关键字搜索结果

这里写图片描述


3。选取listview中的一项即可定位到该位置,或者获取任何消息

这里写图片描述

4.代码有点乱,这两天把代码整理完就上传上来


4.文件类

1、MapActivity

public class MapActivity extends Activity implements PoiSearch.OnPoiSearchListener {
   

    private MapView mMapView = null;
    private AMap aMap;
    private MyLocationStyle myLocationStyle;

    //poiSearch相关
    private PoiSearch poiSearch;
    private PoiSearch.Query query;
    boolean isPoiSearched = false; //是否进行poi搜索

    //listview
    private ListView ll;
    ArrayList<PoiItem> arrayList;
    MyAdpter adapter;
    MyHandler myHandler;

    //字体
    Typeface tf;


    //搜索栏
    FrameLayout frameLayout;
    ImageView searchIv;
    EditText searchEt;
    TextView title;
    Button btn;
    ImageView success;
    boolean onSearch = false; //是否打开搜索栏
    ImageView back;

    private double mCurrentLat;
    private double mCurrentLng;
    Map<String, String> currentInfo = new HashMap<>();
    int selectIndex = -1;
    ImageView currentSelectItem = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        findAllView();
        setAllViewOnclickLinster();
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mMapView.onCreate(savedInstanceState);

        initAMap();
    }


    /**
     * 获取view对象,初始化一些对象
     */
    void findAllView() {
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.map);

        frameLayout = (FrameLayout) findViewById(R.id.searchLayout);
        searchEt = (EditText) findViewById(R.id.search_input);
        searchIv = (ImageView) findViewById(R.id.search);
        btn = (Button) findViewById(R.id.search_go_btn);
        success = (ImageView) findViewById(R.id.success);
        back = (ImageView) findViewById(R.id.back);

        //初始化listview
        ll = (ListView) findViewById(R.id.ll);
        arrayList = new ArrayList<>();
        adapter = new MyAdpter();
        ll.setAdapter(adapter);

        //设置标题字体
        tf = Typeface.createFromAsset(getAssets(), "font/f1.ttf");
        (title = (TextView) findViewById(R.id.title)).setTypeface(tf);

        myHandler = new MyHandler();
    }

    /**
     * 设置点击事件
     */
    void setAllViewOnclickLinster() {


        //当搜索图标点击时,切换显示效果
        searchIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (title.getVisibility() == View.VISIBLE) {
                    hideTitle();
                } else if (title.getVisibility() == View.GONE) {
                    showTitle();
                }
            }
        });

        //点击搜索按钮时,搜索关键字
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String key = searchEt.getText().toString();
                if (!key.trim().isEmpty()) {
                    if (currentSelectItem != null) {
                        currentSelectItem.setVisibility(View.INVISIBLE);
                    }
                    searchPoi(key, 0, currentInfo.get("cityCode"), false);
                }
            }
        });

        //使editText监听回车事件,进行搜索,效果同上
        searchEt.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
                    String key = searchEt.getText().toString();
                    if (!key.trim().isEmpty()) {
                        if (currentSelectItem != null) {
                            currentSelectItem.setVisibility(View.INVISIBLE);
                        }
                        searchPoi(key, 0, currentInfo.get("cityCode"), false);
                    }
                    return 
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值