package com.baidu.map_tool; import java.util.Date; import net.tsz.afinal.FinalDb; import org.xdgdg.tripguide_xidian.R; import org.xdgdg.tripguide_xidian.route; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.format.Time; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.search.MKDrivingRouteResult; import com.baidu.mapapi.search.MKTransitRouteResult; import com.baidu.mapapi.search.MKWalkingRouteResult; import com.baidu.platform.comapi.basestruct.GeoPoint; public class main_mapActivity extends mapActivity { Button btn_end = null; TextView tex_tip = null; String src_name; String tar_name; GeoPoint current_pt; GeoPoint src_pt; main_MapMask amask; //持久化 private FinalDb db; private route route_1; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (requestCode == 0) { if (resultCode != RESULT_OK) { Log.e("axlecho", "bad Activity result."); return; } Bundle extras = intent.getExtras(); if (extras == null) { Log.e("axlecho", "bad intent."); return; } Integer temp = extras.getInt("pos_x"); if(!temp.equals(null)) { GeoPoint pt = new GeoPoint(extras.getInt("pos_x"),extras.getInt("pos_y")); String title = extras.getString("name"); route_1.addpoint(title, extras.getInt("pos_x"), extras.getInt("pos_y")); amask.cover_pic(pt, R.drawable.icon_marke, title); amask.p2p_bywalk(current_pt, pt); current_pt = pt; } } } protected void init() { Log.i("axlecho", "main_mapActivity init"); setContentView(R.layout.map); Log.i("axlecho", "set contentview ok."); Intent intent = getIntent(); src_name = intent.getStringExtra("start"); tar_name = intent.getStringExtra("end"); Log.i("axlecho", "src_name:" + src_name + " " + "tar_name:" + tar_name); Log.i("axlecho", "get intent ok."); tex_tip = (TextView) findViewById(R.id.busline_detail); tex_tip.setText("loading"); map_view = (MapView) findViewById(R.id.bmapsView); map_controller = map_view.getController(); Log.i("axlecho", "get content wight ok."); // 加载离线地图 // scanofflinemap(); // Log.i("axlecho", "scanofflinemap ok."); // 设置起始 setbegin(); Log.i("axlecho", "setbegin ok."); // 地图图形处理工具 amask = new main_MapMask(this, map_view); Log.i("axlecho", "new mask ok."); btn_end = (Button) findViewById(R.id.button_end); btn_end.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Log.i("clicker", "set!"); Time time = new Time("GMT+8"); time.setToNow(); String dateString = String.valueOf(time.year) + "年" + String.valueOf(time.month) + "月" + String.valueOf(time.monthDay) + "日" ; route_1.setDateString(dateString); route_1.setBusline(tex_tip.getText().toString()); Log.i("busline", tex_tip.getText().toString()); db.save(route_1); finish(); } }); // 启动初始化查询 new Thread(new LooperThread()).start(); Log.i("axlecho", "start thread ok."); //获取地理位置 // amask.start_GetLoction(); // amask.cover_Mypos(); db= FinalDb.create(this); Log.i("axlecho","create DB ok."); route_1 = new route(); Log.i("axlecho","create route ok."); Log.i("axlecho", "oncerate ok."); } private class LooperThread extends Thread { public void run() { try { Thread.sleep(sleep_time); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message message = new Message(); message.what = mapActivity.INQUIREFIRSTLINE; main_mapActivity.this.event_handle.sendMessage(message); } }; private Handler event_handle = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case mapActivity.INQUIREFIRSTLINE: amask.p2p_bybus(src_name, tar_name); Log.i("axlecho", "parent handler"); // amask.p2p_bybus(src_pt_x, src_pt_y, tar_pt_x, tar_pt_y); break; } super.handleMessage(msg); } }; private class main_MapMask extends MapMask { public main_MapMask(Activity _context, MapView _mapview) { super(_context, _mapview); // TODO Auto-generated constructor stub } @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int arg1) { // TODO Auto-generated method stub if (result == null) { Log.i("axlecho", "result is null."); return; } Log.i("axlecho", "onGetDrivingRouteResult is ok"); routeOverlay.setData(result.getPlan(0).getRoute(0)); map_view.getOverlays().add(routeOverlay); map_view.refresh(); } @Override public void onGetTransitRouteResult(MKTransitRouteResult result, int arg1) { if (result == null) { Log.i("axlecho", "result is null."); return; } Log.i("axlecho", "onGetTransitRouteResult ok."); // 此处仅展示一个方案作为示例 transit_routeOverlay.setData(result.getPlan(0)); map_view.refresh(); Log.i("axlecho", "i get here."); // 0413-10:55修改 这样子可以获取到两条路线 int num_line = result.getPlan(0).getNumLines() - 1; Log.i("fydx", "需要倒" + String.valueOf(result.getPlan(0).getNumLines() - 1) + "次车"); String tmp = null; if (num_line == 0) { tmp = "从 " + result.getPlan(0).getLine(0).getGetOnStop().name + " " + result.getPlan(0).getLine(0).getTip(); } else { tmp = "从" + result.getPlan(0).getLine(0).getGetOnStop().name + result.getPlan(0).getLine(0).getTip() + "\n再" + result.getPlan(0).getLine(1).getTip(); } // String tmp = result.getPlan(0).getLine(0).getTip(); Log.i("axlecho", tmp); ((main_mapActivity) context).src_pt = result.getPlan(0).getStart(); ((main_mapActivity) context).current_pt = result.getPlan(0) .getEnd(); cover_pic(((main_mapActivity) context).src_pt,R.drawable.icon_marka, "起点"); cover_pic(((main_mapActivity) context).current_pt,R.drawable.icon_marka, "终点"); if (((main_mapActivity) context).tex_tip != null) ((main_mapActivity) context).tex_tip.setText(tmp); // 使用zoomToSpan()绽放地图,使路线能完全显示在地图上 map_view.getController().zoomToSpan( transit_routeOverlay.getLatSpanE6(), transit_routeOverlay.getLonSpanE6()); map_view.getController().animateTo(result.getEnd().pt); } @Override public void onGetWalkingRouteResult(MKWalkingRouteResult result, int errorcode) { if (result == null) { Log.i("axlecho", "result is null."); return; } Log.i("axlecho", "onGetWalkingRouteResult is ok"); routeOverlay.setData(result.getPlan(0).getRoute(0)); map_view.refresh(); // 使用zoomToSpan()绽放地图,使路线能完全显示在地图上 map_view.getController().zoomToSpan( routeOverlay.getLatSpanE6(), routeOverlay.getLonSpanE6()); map_view.getController().animateTo(result.getEnd().pt); } public void on_tip(GeoPoint pt) { int pos_x = pt.getLatitudeE6(); int pos_y = pt.getLongitudeE6(); Intent intent = new Intent(); intent.setClass(context.getApplicationContext(), SearchActivity.class); intent.putExtra("search_x", pos_x); intent.putExtra("search_y", pos_y); context.startActivityForResult(intent, 0); } } @Override protected void onDestroy() { map_view.destroy(); MapBase.Instance(this).terminate(); amask.clear(); Log.i("axlecho", "destroy ok."); super.onDestroy(); } }