package com.wise.wawc;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.Geometry;
import com.baidu.mapapi.map.Graphic;
import com.baidu.mapapi.map.GraphicsOverlay;
import com.baidu.mapapi.map.ItemizedOverlay;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Overlay;
import com.baidu.mapapi.map.OverlayItem;
import com.baidu.mapapi.map.Symbol;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import com.wise.pubclas.Constant;
import com.wise.pubclas.GetSystem;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* 车辆行程
*
* @author honesty
*/
public class TravelMapActivity extends Activity {
private static final String TAG = "TravelMapActivity";
private static final int get_data = 1;
MapView mMapView = null;
MapController mMapController = null;
List<Overlay> overlays;
ProgressDialog Dialog = null; // progress
int device = 3;
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WawcApplication app = (WawcApplication)this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(getApplicationContext());
app.mBMapManager.init(WawcApplication.strKey,null);
}
setContentView(R.layout.activity_travel_map);
ImageView iv_activity_travel_share = (ImageView)findViewById(R.id.iv_activity_travel_share);
iv_activity_travel_share.setOnClickListener(onClickListener);
mMapView = (MapView) findViewById(R.id.mv_travel_map);
mMapView.setBuiltInZoomControls(true);
mMapView.regMapViewListener(app.mBMapManager, mkMapViewListener);
mMapController = mMapView.getController();
GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
(int) (116.404 * 1E6));
mMapController.setCenter(point);// 设置地图中心点
mMapController.setZoom(12);// 设置地图zoom级别
overlays = mMapView.getOverlays();
TextView tv_travel_startPlace = (TextView)findViewById(R.id.tv_travel_startPlace);
TextView tv_travel_stopPlace = (TextView)findViewById(R.id.tv_travel_stopPlace);
TextView tv_travel_startTime = (TextView)findViewById(R.id.tv_travel_startTime);
TextView tv_travel_stopTime = (TextView)findViewById(R.id.tv_travel_stopTime);
TextView tv_travel_spacingDistance = (TextView)findViewById(R.id.tv_travel_spacingDistance);
TextView tv_travel_averageOil = (TextView)findViewById(R.id.tv_travel_averageOil);
TextView tv_travel_oil = (TextView)findViewById(R.id.tv_travel_oil);
TextView tv_travel_speed = (TextView)findViewById(R.id.tv_travel_speed);
TextView tv_travel_cost = (TextView)findViewById(R.id.tv_travel_cost);
ImageView iv_activity_travel_back = (ImageView) findViewById(R.id.iv_activity_travel_back);
iv_activity_travel_back.setOnClickListener(onClickListener);
intent = getIntent();
tv_travel_startPlace.setText(intent.getStringExtra("Start_place"));
tv_travel_stopPlace.setText(intent.getStringExtra("End_place"));
tv_travel_startTime.setText(intent.getStringExtra("StartTime").substring(10, 16));
tv_travel_stopTime.setText(intent.getStringExtra("StopTime").substring(10, 16));
String str = "共"+ intent.getStringExtra("SpacingDistance") + "公里\\" + intent.getStringExtra("SpacingTime");
tv_travel_spacingDistance.setText(str);
tv_travel_averageOil.setText(intent.getStringExtra("AverageOil"));
tv_travel_oil.setText(intent.getStringExtra("Oil"));
tv_travel_speed.setText(intent.getStringExtra("Speed"));
tv_travel_cost.setText(intent.getStringExtra("Cost"));
String StartTime = intent.getStringExtra("StartTime");
String StopTime = intent.getStringExtra("StopTime");
StartTime = "2014-01-02 11:28:37";
StopTime = "2014-01-02 12:28:37";
try {
String url = Constant.BaseUrl + "device/" + device
+ "/gps_data?auth_code=" + Variable.auth_code
+ "&start_time=" + URLEncoder.encode(StartTime, "UTF-8")
+ "&end_time=" + URLEncoder.encode(StopTime, "UTF-8");
new Thread(new NetThread.GetDataThread(handler, url, get_data))
.start();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_activity_travel_back:
finish();
break;
case R.id.iv_activity_travel_share:
Toast.makeText(TravelMapActivity.this, R.string.travel_map_urrent, Toast.LENGTH_LONG).show();
boolean isCurrent = mMapView.getCurrentMap();
System.out.println("isCurrent = " + isCurrent);
break;
}
}
};
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case get_data:
jsonData(msg.obj.toString());
break;
default:
break;
}
}
};
private void jsonData(String result){
try {
GeoPoint startGeoPoint = null;
GeoPoint stopGeoPoint = null;
JSONArray jsonArray = new JSONArray(result);
GeoPoint[] geoPoints = new GeoPoint[jsonArray.length()];
for(int i = 0 ; i < jsonArray.length() ; i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String Lat = jsonObject.getString("lat");
String Lon = jsonObject.getString("lon");
GeoPoint geoPoint = new GeoPoint(GetSystem.StringToInt(Lat),GetSystem.StringToInt(Lon));
geoPoints[i] = geoPoint;
mMapController.setCenter(geoPoint);
if(i == 0){
startGeoPoint = geoPoint;
}else{
stopGeoPoint = geoPoint;
}
}
//创建样式
Symbol palaceSymbol = new Symbol();
Symbol.Color palaceColor = palaceSymbol.new Color();
palaceColor.red = 0;//设置颜色的红色分量
palaceColor.green = 0;//设置颜色的绿色分量
palaceColor.blue = 255;//设置颜色的蓝色分量
palaceColor.alpha = 126;//设置颜色的alpha值
palaceSymbol.setLineSymbol(palaceColor, 7);
Geometry geometry = new Geometry();
geometry.setPolyLine(geoPoints);
Graphic palaceGraphic = new Graphic(geometry, palaceSymbol);
//将自绘图形添加到地图中
GraphicsOverlay palaceOverlay = new GraphicsOverlay(mMapView);
overlays.add(palaceOverlay);
palaceOverlay.setData(palaceGraphic);
if(startGeoPoint != null){
Drawable start= getResources().getDrawable(R.drawable.body_icon_outset);
ItemizedOverlay startItemizedOverlay = new ItemizedOverlay<OverlayItem>(start, mMapView);
overlays.add(startItemizedOverlay);
OverlayItem overlayItem = new OverlayItem(startGeoPoint, "", "");
overlayItem.setAnchor(OverlayItem.ALING_CENTER);
startItemizedOverlay.addItem(overlayItem);
if(stopGeoPoint != null){
Drawable stop= getResources().getDrawable(R.drawable.body_icon_end);
ItemizedOverlay stopItemizedOverlay = new ItemizedOverlay<OverlayItem>(stop, mMapView);
overlays.add(stopItemizedOverlay);
OverlayItem overlayItem1 = new OverlayItem(stopGeoPoint, "", "");
overlayItem1.setAnchor(OverlayItem.ALING_CENTER);
stopItemizedOverlay.addItem(overlayItem1);
}
}
mMapView.refresh();
} catch (JSONException e) {
e.printStackTrace();
}
}
MKMapViewListener mkMapViewListener = new MKMapViewListener() {
@Override
public void onMapMoveFinish() {}
@Override
public void onMapLoadFinish() {}
@Override
public void onMapAnimationFinish() {}
@Override
public void onGetCurrentMap(Bitmap arg0) {
System.out.println("截取成功");
GetSystem.saveImageSD(arg0,Constant.picPath, Constant.ShareImage,50);
String imagePath = Constant.picPath + Constant.ShareImage;
StringBuffer sb = new StringBuffer();
sb.append("【行程】");
sb.append(intent.getStringExtra("StartTime").substring(5, 16));
sb.append(" 从" + intent.getStringExtra("Start_place"));
sb.append("到" + intent.getStringExtra("End_place"));
sb.append(",共行驶" + intent.getStringExtra("SpacingDistance"));
sb.append("公里,耗时" + intent.getStringExtra("SpacingTime"));
sb.append("," + intent.getStringExtra("Oil"));
sb.append("," + intent.getStringExtra("Cost"));
sb.append("," + intent.getStringExtra("AverageOil"));
sb.append("," + intent.getStringExtra("Speed"));
System.out.println(sb.toString());
GetSystem.share(TravelMapActivity.this, sb.toString(), imagePath,0,0,"行程","");
}
@Override
public void onClickMapPoi(MapPoi arg0) {}
};
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.destroy();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
}