实现类似于微信的定位搜索。
布局:
上面是一个mapview,红点只是一张图片,用于显示当前的位置,载入时首先定位,然后以定位地点为中心搜索附近,通过adapter显示在下面的listview里面。其中触摸移动地图会重新搜索,点击listview里面的item会使地图中心移动到该位置但是不会重新搜索。上面的搜索功能可以在输入关键字是提示。
public class MapActivity extends AppCompatActivity implements
OnGeocodeSearchListener, LocationSource, AMapLocationListener,
OnCameraChangeListener, OnPoiSearchListener , OnItemClickListener, TextWatcher, InputtipsListener{
private GeocodeSearch geocoderSearch;
private String addressName;
private MapView mapView;
private AMap aMap;
private OnLocationChangedListener mListener;
private AMapLocationClient mlocationClient;
private AMapLocationClientOption mLocationOption;
// private TextView mTapTextView;
private AutoCompleteTextView searchText;
private Button mButton1 ,mButton2,searchButton;
private LatLonPoint latLonPoint;
private PoiItem poiItem;
private ImageView mImg;
private ProgressBar progressBar;
private ListView mListView;
private PoiListAdapter mPoiListAdapter;
private PoiSearch.Query query;// Poi查询条件类
private PoiSearch poiSearch;
private PoiResult poiResult; // poi返回的结果
private List<PoiItem> poiItems;// poi数据
private PoiItem fitem;
private String keyWord = "";
private String city = "温州市";
private boolean IsManual;
@Override
protected void onCreate(Bundle savedInstanceState) {
IsManual = false;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);//此方法必须重写
init();
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
searchText = (AutoCompleteTextView) findViewById(R.id.keyWord);
searchText.addTextChangedListener(this);// 添加文本输入框监听事件
mButton1 = (Button) findViewById(R.id.back_btn);
mButton1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.putExtra("longitude", "");
intent.putExtra("latitude", "");
intent.putExtra("address", "");
setResult(RESULT_OK,intent);
finish();
}
});
mButton2 = (Button) findVi