package com.baidu.map_tool;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.xdgdg.tripguide_xidian.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.platform.comapi.basestruct.GeoPoint;
public class SearchActivity extends Activity {
private EditText editText;
private SimpleAdapter mSchedule;
private ListView listView;
private List<Map<String, String>> mData = new ArrayList<Map<String, String>>();
private List<MKPoiInfo> pois = new ArrayList<MKPoiInfo>();
private int pos_x, pos_y;
private SeekBar seekBar;
private int time_hour;
private TextView textView_time;
private MKSearch mMKSearch = null;
private BMapManager mBMapMan = null;
private Button button, button_cinema, button_ktv, button_rest,
button_coffee;
private MKPoiInfo clicked_pt = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMKSearch = new MKSearch();
mBMapMan = new BMapManager(getApplication());
mBMapMan.init("5DD5B539C690BC0AF97D9E69733C1D87C9D70F7E", null);
mMKSearch.init(mBMapMan, new MySearchListener());
MKSearch.setPoiPageCapacity(30); // 设置一次可以查询到的poi最大数量
setContentView(R.layout.activity_search);
Intent intent = getIntent();
pos_x = intent.getIntExtra("search_x", 34000000);
pos_y = intent.getIntExtra("search_y", 108000000);
Log.e("get pos", pos_x + " " + pos_y);
listView = (ListView) findViewById(R.id.listView_search);
editText = (EditText) findViewById(R.id.edittext_search);
editText.clearFocus();// 失去焦点,默认不弹出输入法
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
button = (Button) findViewById(R.id.search);
button_rest = (Button) findViewById(R.id.search_rest);
button_cinema = (Button) findViewById(R.id.search_cinema);
button_ktv = (Button) findViewById(R.id.search_ktv);
button_coffee = (Button) findViewById(R.id.search_coffee);
button_rest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText("餐厅");
mMKSearch.poiSearchNearBy("餐厅", new GeoPoint((int) (pos_x),
(int) (pos_y)), 1500);
}
});
button_cinema.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText("电影院");
mMKSearch.poiSearchNearBy("电影院", new GeoPoint((int) (pos_x),
(int) (pos_y)), 1500);
}
});
button_coffee.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText("咖啡厅");
mMKSearch.poiSearchNearBy("咖啡厅", new GeoPoint((int) (pos_x),
(int) (pos_y)), 1500);
}
});
button_ktv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText("KTV");
mMKSearch.poiSearchNearBy("KTV", new GeoPoint((int) (pos_x),
(int) (pos_y)), 1500);
}
});
mData = new ArrayList<Map<String, String>>();
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String type = editText.getText().toString();
mMKSearch.poiSearchNearBy(type, new GeoPoint((int) (pos_x),
(int) (pos_y)), 1500);
}
});
}
/*@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.search, menu);
return true;
} */
public void initListView() {
mData.clear(); // 清空上次添加的信息
for (MKPoiInfo poi : pois) {
Log.i("info", poi.name);
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", poi.name);
map.put("address", poi.address);
map.put("tel", poi.phoneNum);
Log.i("poi.name", poi.name);
Log.i("poi.address", poi.address);
Log.i("poi.tel", poi.phoneNum);
mData.add(map);
}
mSchedule = new SimpleAdapter(this, // 没什么解释
mData,// 数据来源
R.layout.listitem_search,// ListItem的XML实现
// 动态数组与ListItem对应的子项
new String[] { "name", "address", "tel" },
// ListItem的XML文件里面的三个TextView ID
new int[] { R.id.search_name, R.id.search_address,
R.id.search_tel });
// 添加并且显示
listView.setDividerHeight(0);
listView.setAdapter(mSchedule);
LayoutInflater factory = LayoutInflater.from(SearchActivity.this);
final View dialogView = factory.inflate(R.layout.dialog_time, null);
seekBar = (SeekBar) dialogView.findViewById(R.id.stoptime);
textView_time = (TextView) dialogView.findViewById(R.id.textView_time);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int index,
long arg3) {
// TODO Auto-generated method stub
clicked_pt = pois.get(index);
// init_dialog(); // 仅初始化,未定义传值!//暂时取消时间选择
time_hour = seekBar.getProgress();
Log.e("stoptime", String.valueOf(time_hour));
Intent intent = new Intent();
intent.putExtra("pos_x", clicked_pt.pt.getLatitudeE6());
intent.putExtra("pos_y", clicked_pt.pt.getLongitudeE6());
intent.putExtra("name", clicked_pt.name);
setResult(RESULT_OK, intent);
finish();
}
});
}
public class MySearchListener implements MKSearchListener {
@Override
public void onGetAddrResult(MKAddrInfo result, int iError) {
// 返回地址信息搜索结果
}
@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult result,
int iError) {
// 返回驾乘路线搜索结果
}
@Override
public void onGetPoiResult(MKPoiResult res, int type, int error) {
if (error != 0 || res == null) {
Toast.makeText(SearchActivity.this, "抱歉,未找到结果",
Toast.LENGTH_LONG).show();
return;
}
pois.clear();
pois = res.getAllPoi();
initListView(); // 初始化Listview
Log.e("poi num", pois.size() + "");
}
@Override
public void onGetTransitRouteResult(MKTransitRouteResult result,
int iError) {
// 返回公交搜索结果
}
@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult result,
int iError) {
// 返回步行路线搜索结果
}
@Override
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
// 返回公交车详情信息搜索结果
}
@Override
public void onGetSuggestionResult(MKSuggestionResult result, int iError) {
// 返回联想词信息搜索结果
}
@Override
public void onGetPoiDetailSearchResult(int arg0, int arg1) {
// TODO Auto-generated method stub
}
}
public void init_dialog() {
LayoutInflater factory = LayoutInflater.from(SearchActivity.this);
final View dialogView = factory.inflate(R.layout.dialog_time, null);
seekBar = (SeekBar) dialogView.findViewById(R.id.stoptime);
textView_time = (TextView) dialogView.findViewById(R.id.textView_time);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
textView_time.setText(String.valueOf(seekBar.getProgress())
+ "小时");
}
});
new AlertDialog.Builder(SearchActivity.this)
.setTitle("选择停留时间(小时)")
.setView(dialogView)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
time_hour = seekBar.getProgress();
Log.e("stoptime", String.valueOf(time_hour));
Intent intent = new Intent();
intent.putExtra("pos_x", clicked_pt.pt.getLatitudeE6());
intent.putExtra("pos_y", clicked_pt.pt.getLongitudeE6());
intent.putExtra("name", clicked_pt.name);
setResult(RESULT_OK, intent);
finish();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
}).create().show();
;
}
}