ass="language-java"> Intent intent = new Intent();
intent.setClass(getApplicationContext(), MainMapActivity.class);
intent.putExtra("from", "search_all_activity");
intent.putExtra("zhan_name", addressAllList.get(position).get("name"));
intent.putExtra("jing", addressAllList.get(position).get("jing"));
intent.putExtra("wei", addressAllList.get(position).get("wei"));
ProfileManager.getInstance().setSearchAddress(getApplicationContext(), addressAllList.get(position).get("name"));
startActivity(intent);
}
});
}
public class SearchAdapter extends BaseAdapter {
private Context context;
private List<Map<String, String>> aList;
private List<RecommendZhan> pList;
public SearchAdapter(Context context, List<Map<String, String>> list, List<RecommendZhan> pointList) {
this.context = context;
this.aList = list;
this.pList = pointList;
}
@Override
public int getCount() {
return aList.size() + pList.size();
}
@Override
public Object getItem(int position) {
if (aList.size() == 0) {
return pList.get(position);
} else {
return aList.get(position);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_search, null);
viewHolder = new ViewHolder();
viewHolder.address_item = convertView.findViewById(R.id.address_item);
viewHolder.point_item = convertView.findViewById(R.id.point_item);
viewHolder.name = convertView.findViewById(R.id.search_name);
viewHolder.address = convertView.findViewById(R.id.search_address);
viewHolder.address_header_title = convertView.findViewById(R.id.address_header_title);
viewHolder.query_all_addresses = convertView.findViewById(R.id.query_all_addresses);
viewHolder.point_header_title = convertView.findViewById(R.id.point_header_title);
viewHolder.query_all_points = convertView.findViewById(R.id.query_all_points);
viewHolder.zhan_name = convertView.findViewById(R.id.zhan_name);
viewHolder.red_paper_bag = convertView.findViewById(R.id.red_paper_bag);
viewHolder.score_img = convertView.findViewById(R.id.score_img);
viewHolder.score_text = convertView.findViewById(R.id.score_text);
viewHolder.distance = convertView.findViewById(R.id.distance);
viewHolder.zongjia_container = convertView.findViewById(R.id.zongjia_container);
viewHolder.zongjia = convertView.findViewById(R.id.zongjia);
viewHolder.charge_record_cnt = convertView.findViewById(R.id.charge_record_cnt);
viewHolder.comment_cnt = convertView.findViewById(R.id.comment_cnt);
viewHolder.times_line = convertView.findViewById(R.id.times_line);
viewHolder.fenshi_info_textview = convertView.findViewById(R.id.fenshi_info_textview);
viewHolder.iv_label_public = convertView.findViewById(R.id.iv_label_public);
viewHolder.iv_label_ground = convertView.findViewById(R.id.iv_label_ground);
viewHolder.iv_label_free_park = convertView.findViewById(R.id.iv_label_free_park);
viewHolder.payment_method = convertView.findViewById(R.id.payment_method);
viewHolder.recommend_nav = convertView.findViewById(R.id.recommend_nav);
viewHolder.window_tv_fast_free_label = convertView.findViewById(R.id.window_tv_fast_free_label);
viewHolder.window_tv_fast_free_num = convertView.findViewById(R.id.window_tv_fast_free_num);
viewHolder.window_tv_fast_total_num = convertView.findViewById(R.id.window_tv_fast_total_num);
viewHolder.window_tv_slow_free_label = convertView.findViewById(R.id.window_tv_slow_free_label);
viewHolder.window_tv_slow_free_num = convertView.findViewById(R.id.window_tv_slow_free_num);
viewHolder.window_tv_slow_total_num = convertView.findViewById(R.id.window_tv_slow_total_num);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (aList.size() != 0) {
showAddressView(viewHolder, aList.get(position), position);
} else {
RecommendZhan point = pList.get(position - aList.size());
showPointView(viewHolder, point, position);
}
return convertView;
}
class ViewHolder {
LinearLayout address_item, point_item, zongjia_container;
TextView name, address, address_header_title, query_all_addresses;
TextView point_header_title, query_all_points, zhan_name, score_text, distance, zongjia,
charge_record_cnt, comment_cnt, fenshi_info_textview, iv_label_public, iv_label_ground,
iv_label_free_park, payment_method, window_tv_fast_free_label, window_tv_fast_free_num, window_tv_fast_total_num,
window_tv_slow_free_label, window_tv_slow_free_num, window_tv_slow_total_num;
ImageView red_paper_bag, score_img;
View times_line;
Button recommend_nav;
}
private void showAddressView(ViewHolder viewHolder, Map<String, String> item, int position) {
viewHolder.address_item.setVisibility(View.VISIBLE);
viewHolder.point_item.setVisibility(View.GONE);
viewHolder.address_header_title.setVisibility(View.GONE);
viewHolder.name.setText(item.get("name"));
viewHolder.address.setText(item.get("address"));
viewHolder.query_all_addresses.setVisibility(View.GONE);
}
private void showPointView(ViewHolder viewHolder, RecommendZhan point, int position) {
viewHolder.point_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), NewZhanDetailsActivity.class);
intent.putExtra("zhan_id", point.getId());
startActivity(intent);
}
});
viewHolder.address_item.setVisibility(View.GONE);
viewHolder.point_item.setVisibility(View.VISIBLE);
viewHolder.point_header_title.setVisibility(View.GONE);
viewHolder.query_all_points.setVisibility(View.GONE);
viewHolder.zhan_name.setText(point.getZhan_name());
if ("1".equals(point.getOwn_pay())) {
viewHolder.red_paper_bag.setVisibility(View.VISIBLE);
} else {
viewHolder.red_paper_bag.setVisibility(View.GONE);
}
viewHolder.red_paper_bag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_example = new Intent(getApplicationContext(), ExampleActivity.class);
intent_example.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent_example);
overridePendingTransition(0, 0);
}
});
showStarInfoView(viewHolder, point);
if ("0m".equals(point.getDistance())) {
viewHolder.distance.setText("未知");
} else {
viewHolder.distance.setText(point.getDistance());
}
if (point.getZongjia() == 0) {
viewHolder.zongjia_container.setVisibility(View.GONE);
} else {
viewHolder.zongjia_container.setVisibility(View.VISIBLE);
viewHolder.zongjia.setText(String.format("%.2f", point.getZongjia()));
}
if (point.getComment_cnt() == 0 || point.getCharge_record_cnt() == 0 && point.getComment_cnt() == 0) {
viewHolder.times_line.setVisibility(View.GONE);
} else {
viewHolder.times_line.setVisibility(View.VISIBLE);
}
if (point.getCharge_record_cnt() == 0) {
viewHolder.charge_record_cnt.setVisibility(View.GONE);
} else {
viewHolder.charge_record_cnt.setVisibility(View.VISIBLE);
if (point.getCharge_record_cnt() < 1000) {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() + "次充电成功");
} else if (point.getCharge_record_cnt() < 10000) {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 1000 + "k+次充电成功");
} else {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 10000 + "w+次充电成功");
}
}
if (point.getComment_cnt() == 0) {
viewHolder.comment_cnt.setVisibility(View.GONE);
} else {
viewHolder.comment_cnt.setVisibility(View.VISIBLE);
if (point.getComment_cnt() < 1000) {
viewHolder.comment_cnt.setText(point.getComment_cnt() + "次评论");
} else if (point.getComment_cnt() < 10000) {
viewHolder.comment_cnt.setText(point.getComment_cnt() / 1000 + "k+次评论");
} else {
viewHolder.comment_cnt.setText(point.getComment_cnt() / 10000 + "w+次评论");
}
}
if ("1".equals(point.getFenshi_is())) {
viewHolder.fenshi_info_textview.setText("");
ArrayList<PileData.FenshiInfoBean> fenshiList = (ArrayList<PileData.FenshiInfoBean>) JsonUtils.parseToObjectList(point.getFenshi_info(), PileData.FenshiInfoBean.class);
Calendar calendar = Calendar.getInstance();
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int totalMinutes = hours * 60 + minutes;
for (PileData.FenshiInfoBean bean : fenshiList) {
if (bean.getStartTotalMinutes() > totalMinutes) {
double service_free = 0;
double charge_free = 0;
try {
service_free = Double.valueOf(bean.getService_free());
charge_free = Double.valueOf(bean.getCharge_free());
} catch (Exception e) {
e.printStackTrace();
}
viewHolder.fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
break;
}
}
} else {
viewHolder.fenshi_info_textview.setText("");
}
viewHolder.iv_label_public.setText(point.getBelong_attribute());
viewHolder.iv_label_ground.setText("0".equals(point.getPark_location()) ? "地下" : "地上");
viewHolder.iv_label_free_park.setVisibility(point.getStop_cost().contains("免费") ? View.VISIBLE : View.GONE);
if ("1".equals(point.getOwn_pay())) {
viewHolder.payment_method.setText("可使用本APP扫码支付");
} else {
if ("".equals(point.getCharge_cost_way2())) {
viewHolder.payment_method.setText("暂无");
} else {
viewHolder.payment_method.setText(point.getCharge_cost_way2());
}
}
viewHolder.recommend_nav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recommendNav(point);
}
});
if (point.getFast_able_num() == null && point.getSlow_able_num() == null) {
viewHolder.window_tv_fast_free_label.setVisibility(View.GONE);
viewHolder.window_tv_fast_total_num.setVisibility(View.GONE);
viewHolder.window_tv_slow_free_label.setVisibility(View.GONE);
viewHolder.window_tv_slow_total_num.setVisibility(View.GONE);
viewHolder.window_tv_fast_free_num.setText("".equals(point.getFast_num()) ? "0" : point.getFast_num());
viewHolder.window_tv_slow_free_num.setText("".equals(point.getSlow_num()) ? "0" : point.getSlow_num());
} else {
viewHolder.window_tv_fast_free_label.setVisibility(View.VISIBLE);
viewHolder.window_tv_fast_total_num.setVisibility(View.VISIBLE);
viewHolder.window_tv_slow_free_label.setVisibility(View.VISIBLE);
viewHolder.window_tv_slow_total_num.setVisibility(View.VISIBLE);
viewHolder.window_tv_fast_free_num.setText(point.getFast_able_num());
viewHolder.window_tv_slow_free_num.setText(point.getSlow_able_num());
viewHolder.window_tv_fast_total_num.setText("".equals(point.getFast_num()) ? "0" : "/" + point.getFast_num());
viewHolder.window_tv_slow_total_num.setText("".equals(point.getSlow_num()) ? "0" : "/" + point.getSlow_num());
}
}
private void showStarInfoView(ViewHolder viewHolder, RecommendZhan point) {
String starStr = point.getStar();
double star = 0.0;
try {
star = Double.parseDouble(starStr);
} catch (NumberFormatException e) {
e.printStackTrace();
}
viewHolder.score_text.setText(String.format("%.1f分", star));
if (star == 0) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_0xing));
viewHolder.score_text.setText("暂无评分");
} else if (star > 0 && star < 1) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_05xing));
} else if (star >= 1 && star < 1.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_1xing));
} else if (star >= 1.5 && star < 2) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_15xing));
} else if (star >= 2 && star < 2.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_2xing));
} else if (star >= 2.5 && star < 3) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_25xing));
} else if (star >= 3 && star < 3.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_3xing));
} else if (star >= 3.5 && star < 4) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_35xing));
} else if (star >= 4 && star < 4.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_4xing));
} else if (star >= 4.5 && star < 5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_45xing));
} else {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_5xing));
}
}
}
private void getGaode(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double gg_lon;
double gg_lat;
double x = jing - 0.0065, y = wei - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
gg_lon = z * Math.cos(theta);
gd_jing = String.valueOf(gg_lon);
gg_lat = z * Math.sin(theta);
gd_wei = String.valueOf(gg_lat);
}
private void recommendNav(RecommendZhan rz) {
String wei = rz.getPoi_wei().trim();
String jing = rz.getPoi_jing().trim();
int position_jing = jing.length() - jing.indexOf(".") - 1;
int position_wei = wei.length() - wei.indexOf(".") - 1;
final LatLng ll;
if (position_jing > 13 || position_wei > 13) {
ll = new LatLng(Double.parseDouble(wei), Double.parseDouble(jing));
} else {
double dwei = Double.parseDouble(wei);
double djing = Double.parseDouble(jing);
getGaode(djing, dwei);
ll = new LatLng(Double.parseDouble(gd_wei), Double.parseDouble(gd_jing));
}
if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap") &&
!isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
intent.putExtra("start_jing", MainApplication.center.longitude + "");
intent.putExtra("start_wei", MainApplication.center.latitude + "");
intent.putExtra("stop_jing", ll.longitude + "");
intent.putExtra("stop_wei", ll.latitude + "");
startActivity(intent);
} else {
if (MainApplication.center != null) {
LayoutInflater inflater1 = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popupWindowView = inflater1.inflate(R.layout.item_selectmap, null);
popupWindow = new PopupWindow(popupWindowView,
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT,
true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
// 设置PopupWindow的弹出和消失效果
popupWindow.setAnimationStyle(R.style.popupAnimation);
LinearLayout ll_tvTwo = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvTwo);
if (!isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
ll_tvTwo.setVisibility(View.GONE);
}
LinearLayout ll_tvOne = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvOne);
if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap")) {
ll_tvOne.setVisibility(View.GONE);
}
cancleButton = (Button) popupWindowView.findViewById(R.id.cancleButton);
cancleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
}
});
tvThree = (TextView) popupWindowView.findViewById(R.id.tvThree);
tvThree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
intent.putExtra("start_jing", MainApplication.center.longitude + "");
intent.putExtra("start_wei", MainApplication.center.latitude + "");
intent.putExtra("stop_jing", ll.longitude + "");
intent.putExtra("stop_wei", ll.latitude + "");
startActivity(intent);
popupWindow.dismiss();
}
});
tvOne = (TextView) popupWindowView.findViewById(R.id.tvOne);
tvOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = null;
int position_jing = rz.getPoi_jing().length() - rz.getPoi_jing().indexOf(".") - 1;
int position_wei = rz.getPoi_wei().length() - rz.getPoi_wei().indexOf(".") - 1;
if (position_jing > 13 || position_wei > 13) {
getBaidu1(Double.parseDouble(rz.getPoi_jing()), Double.parseDouble(rz.getPoi_wei()));
} else {
bd_jing = Double.parseDouble(rz.getPoi_jing());
bd_wei = Double.parseDouble(rz.getPoi_wei());
}
getBaidu(MainApplication.center.longitude, MainApplication.center.latitude);
try {
String s = "intent://map/direction?" +
"origin=" + bd_lat + "," + bd_lon + "&" +
"destination=" + bd_wei + "," + bd_jing +
"&mode=driving&" +
"src=充电桩#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end";
intent = Intent.getIntent(s);
} catch (URISyntaxException e) {
e.printStackTrace();
}
startActivity(intent);
popupWindow.dismiss();
}
});
tvTwo = (TextView) popupWindowView.findViewById(R.id.tvTwo);
tvTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
Intent intent4 = new Intent("android.intent.action.VIEW",
android.net.Uri.parse("androidamap://route?sourceApplication=amap&slat=" + MainApplication.center.latitude + "&slon=" + MainApplication.center.longitude + "&sname=我的位置&dlat=" + ll.latitude + "&dlon=" + ll.longitude + "&dname=" + rz.getZhan_name() + "&dev=0&m=0&t=2"));
intent4.setPackage("com.autonavi.minimap");
startActivity(intent4);
popupWindow.dismiss();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplication(), "请您确认是否安装高德地图APP", Toast.LENGTH_SHORT).show();
}
}
});
popupWindow.showAtLocation(cancleButton, Gravity.CENTER, 0, 0);
} else {
Toast.makeText(getApplication(),
"没有定位到您的当前位置", Toast.LENGTH_SHORT)
.show();
}
}
}
private boolean isAvilible(Context context, String packageName) {
//获取packagemanager
final PackageManager packageManager = context.getPackageManager();
//获取所有已安装程序的包信息
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
//用于存储所有已安装程序的包名
List<String> packageNames = new ArrayList<String>();
//从pinfo中将包名字逐一取出,压入pName list中
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
//判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}
private void getBaidu(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double x = jing;
double y = wei;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
bd_lon = z * Math.cos(theta) + 0.0065;
bd_lat = z * Math.sin(theta) + 0.006;
}
private void getBaidu1(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double x = jing;
double y = wei;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
bd_jing = z * Math.cos(theta) + 0.0065;
bd_wei = z * Math.sin(theta) + 0.006;
}
}
|
||
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|