From 8a14ef6a9093000e5b9b081cc76d0620810e3618 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期五, 03 四月 2020 09:33:12 +0800
Subject: [PATCH] 地图增加放大、缩小功能
---
app/src/main/java/safeluck/drive/evaluation/Constant.java | 1
app/src/main/java/safeluck/drive/evaluation/app.java | 4
app/src/main/res/layout/layout_mapfragment.xml | 35
app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java | 41 +
app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | 1006 ++++++++++++++++++++++++++++++++++------------------
5 files changed, 708 insertions(+), 379 deletions(-)
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index 2100f97..dd9a534 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -89,6 +89,7 @@
public static final int EXIT_CURRENT_ITEM = 0;//閫�鍑烘煇鍦哄湴
public static final String RTK_INFO_SAT_QF = "RTK_INFO_SAT_QF";//浠嶳TK info涓幏鍙栫殑鍗槦棰楁暟鍜宷f 缁勬垚鐨刯son
public static final int SUBJECT_III = 3;//璺��
+ public static final int LEFT_RIGHT_DISTANCE = 0x0020;
public static String exam_enter_exitdata="exam_enter_exitdata";
public static int Chang_di = 2;
public static int DaoLu_night = 3;
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 548d988..c01b308 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -456,7 +456,9 @@
}
break;
-
+ case Constant.LEFT_RIGHT_DISTANCE:
+
+ break;
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
index 187d6e5..87d38b3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -17,6 +17,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -29,8 +30,6 @@
import com.google.gson.reflect.TypeToken;
-import org.json.JSONException;
-import org.json.JSONObject;
import java.lang.reflect.Type;
import java.math.BigDecimal;
@@ -52,7 +51,6 @@
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
import safeluck.drive.evaluation.util.FileUtil;
-import safeluck.drive.evaluation.util.Utils;
/**
@@ -61,8 +59,9 @@
* 閭锛�632393724@qq.com
* All Rights Saved! Chongqing AnYun Tech co. LTD
*/
-public class MapFragment extends SupportFragment {
+public class MapFragment extends SupportFragment implements View.OnClickListener {
private boolean isDrawing = false;
+ private int pixels = 80;
private ICEventListener rtcmicEventListener = new ICEventListener() {
@Override
public void onCEvent(String topic, int msgCode, int resultCode, final Object obj) {
@@ -75,7 +74,7 @@
toolbar.setTitle((String)obj);
}
});
- }
+ }
}
};
private ICEventListener debugTxticEventListener = new ICEventListener() {
@@ -116,7 +115,10 @@
private Toolbar toolbar;
private Bitmap bmp = null;
+ private Bitmap bmp2 = null;
+
private Canvas canvas2 = null;
+ private Canvas canvas3 = null;
private Paint paint = null;
private int screen_width = 0, screen_height = 0;
private String osdHeading = null;
@@ -129,11 +131,11 @@
double allMap[][][];
double map[][] = {{-2.4065, 30.7090}, {-3.0759, 30.3599}, { -2.6023, 29.2578}, {-3.3316,28.9383},{-3.8247,30.0293},
- {-3.4503,30.1946}, {-2.9669,29.0981}, { -3.6962, 28.7786}, {-4.1991, 29.8640}};
+ {-3.4503,30.1946}, {-2.9669,29.0981}, { -3.6962, 28.7786}, {-4.1991, 29.8640}};
double map_other[][] = {{-2.4065, 30.7090}, {-3.0759, 30.3599}, { -2.6023, 29.2578}, {-3.3316,28.9383},{-3.8247,30.0293},
- {-3.4503,30.1946}, {-2.9669,29.0981}};
+ {-3.4503,30.1946}, {-2.9669,29.0981}};
-// double map[][] ;
+ // double map[][] ;
double car[][] = {{8.278, 1.467}, {7.2780000000000009, 1.467}, {7.2780000000000009, -1.533}, {8.278, -1.533}
, {9.278, -1.5330000000000004}, {9.277999999999999, 1.467000000000001}};
Gson gson;
@@ -152,22 +154,15 @@
consumer.execute(new CalRunnable());
return view;
}
-private int avaliableHeight,avalibleWidth;
+ private int avaliableHeight,avalibleWidth;
private void initView(View view) {
- toolbar = view.findViewById(R.id.toolbar);
- toolbar.setTitle("绠�鍗曞湴鍥�");
- toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- _mActivity.onBackPressed();
- }
- });
- avaliableHeight= getResources().getDisplayMetrics().heightPixels;
-avalibleWidth = getResources().getDisplayMetrics().widthPixels;
+
+ avaliableHeight= getResources().getDisplayMetrics().heightPixels;
+ avalibleWidth = getResources().getDisplayMetrics().widthPixels;
Log.i(TAG, "initView: aliwidht="+avalibleWidth+" height="+avaliableHeight);
mSurfaceView = view.findViewById(R.id.surfaceview);
-
+ view.findViewById(R.id.btn_reduce).setOnClickListener(this);
+ view.findViewById(R.id.btn_amplify).setOnClickListener(this);
holder = mSurfaceView.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@@ -181,9 +176,15 @@
screen_height = canvas.getHeight();
surfaceHolder.unlockCanvasAndPost(canvas);
- bmp = Bitmap.createBitmap(screen_width, screen_height, Bitmap.Config.ARGB_8888);
+ bmp = Bitmap.createBitmap(screen_width*2/3, screen_height, Bitmap.Config.ARGB_8888);
canvas2 = new Canvas(bmp);
canvas2.drawColor(Color.WHITE);
+
+ bmp2 = Bitmap.createBitmap(screen_width/3, screen_height, Bitmap.Config.ARGB_8888);
+ canvas3 = new Canvas(bmp2);
+ canvas3.drawColor(Color.WHITE);
+
+ Log.d(TAG, "BMP W = " + bmp.getWidth() + "BMP H = " + bmp.getHeight());
paint = new Paint();
@@ -194,6 +195,7 @@
paint.setStyle(Paint.Style.STROKE);
holder.lockCanvas();
+ canvas.drawBitmap(bmp2, screen_width/3, 0, paint);
canvas.drawBitmap(bmp, 0, 0, paint);
holder.unlockCanvasAndPost(canvas);
}
@@ -216,186 +218,188 @@
if (canvas2 == null || bmp == null) {
return;
}
- double base_x = 300, base_y = 20;
- double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
+// _mActivity.runOnUiThread(new Runnable() {
+// @Override
+// public void run() {
+ double base_x = 300, base_y = 20;
+ double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
- Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length+"map other length="+map_other.length);
+ Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length);
- for (int i = 0; i < map.length; i++) {
- if (i == 0) {
- max_x = map[0][0];
- min_x = map[0][0];
- max_y = map[0][1];
- min_y = map[0][1];
- } else {
- if (max_x < map[i][0]) {
- max_x = map[i][0];
- }
- if (min_x > map[i][0]) {
- min_x = map[i][0];
- }
- if (max_y < map[i][1]) {
- max_y = map[i][1];
- }
- if (min_y > map[i][1]) {
- min_y = map[i][1];
- }
- }
+ for (int i = 0; i < map.length; i++) {
+ if (i == 0) {
+ max_x = map[0][0];
+ min_x = map[0][0];
+ max_y = map[0][1];
+ min_y = map[0][1];
+ } else {
+ if (max_x < map[i][0]) {
+ max_x = map[i][0];
}
- if (map_other.length>9){
- for (int i = 0; i < map_other.length; i++) {
-
- if (max_x < map_other[i][0]) {
- max_x = map_other[i][0];
- }
- if (min_x > map_other[i][0]) {
- min_x = map_other[i][0];
- }
- if (max_y < map_other[i][1]) {
- max_y = map_other[i][1];
- }
- if (min_y > map_other[i][1]) {
- min_y = map_other[i][1];
- }
- }
+ if (min_x > map[i][0]) {
+ min_x = map[i][0];
}
-
-
- Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
-
-// for (int i = 0; i < car.length; i++) {
-// if (max_x < car[i][0]) {
-// max_x = car[i][0];
-// }
-// if (min_x > car[i][0]) {
-// min_x = car[i][0];
-// }
-// if (max_y < car[i][1]) {
-// max_y = car[i][1];
-// }
-// if (min_y > car[i][1]) {
-// min_y = car[i][1];
-// }
-// }
-
- Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
-
- long scale_x = Math.round((screen_width - base_x - 10) / (max_x - min_x));
- long scale_y = Math.round((screen_height - base_y - 10) / (max_y - min_y));
-
- if (scale_x >= scale_y) {
- scale_x = scale_y;
- } else {
- scale_y = scale_x;
+ if (max_y < map[i][1]) {
+ max_y = map[i][1];
}
-
- Log.d(TAG, "DrawMap scale_x " + scale_x + " scale_y " + scale_y);
-
-
- canvas2.drawColor(Color.WHITE);
-
- if (paint == null || canvas2==null){
- return;
+ if (min_y > map[i][1]) {
+ min_y = map[i][1];
}
- paint.setStyle(Paint.Style.FILL_AND_STROKE);
- paint.setColor(Color.BLUE);
+ }
+ }
+ if (map_other.length>9){
+ for (int i = 0; i < map_other.length; i++) {
- canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (0 - mainAnt.get(1) - min_y) * scale_y), 2, paint);
+ if (max_x < map_other[i][0]) {
+ max_x = map_other[i][0];
+ }
+ if (min_x > map_other[i][0]) {
+ min_x = map_other[i][0];
+ }
+ if (max_y < map_other[i][1]) {
+ max_y = map_other[i][1];
+ }
+ if (min_y > map_other[i][1]) {
+ min_y = map_other[i][1];
+ }
+ }
+ }
- paint.setColor(Color.RED);
- canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint);
- paint.setStyle(Paint.Style.STROKE);
- paint.setColor(Color.BLACK);
+ Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
- Path path = new Path();
+ for (int i = 0; i < car.length; i++) {
+ if (max_x < car[i][0]) {
+ max_x = car[i][0];
+ }
+ if (min_x > car[i][0]) {
+ min_x = car[i][0];
+ }
+ if (max_y < car[i][1]) {
+ max_y = car[i][1];
+ }
+ if (min_y > car[i][1]) {
+ min_y = car[i][1];
+ }
+ }
+
+ Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
+
+ long scale_x = Math.round((bmp.getWidth() - base_x - 10) / (max_x - min_x));
+ long scale_y = Math.round((bmp.getHeight() - base_y - 10) / (max_y - min_y));
+
+ if (scale_x >= scale_y) {
+ scale_x = scale_y;
+ } else {
+ scale_y = scale_x;
+ }
+
+ Log.d(TAG, "DrawMap scale_x " + scale_x + " scale_y " + scale_y);
+
+ canvas2.drawColor(Color.WHITE);
+
+ if (paint == null || canvas2==null){
+ return;
+ }
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
+ paint.setColor(Color.BLUE);
+
+ canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (0 - mainAnt.get(1) - min_y) * scale_y), 2, paint);
+
+ paint.setColor(Color.RED);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint);
+
+ paint.setStyle(Paint.Style.STROKE);
+ paint.setColor(Color.BLACK);
+
+ Path path = new Path();
Log.i(TAG, "DrawMap: map.length:"+map.length);
- if (map.length < 9) {
- Log.d(TAG, "DrawMap X = " + String.format("%f", (float) (base_x + (map[0][0] - min_x) * scale_x)) + " Y = " + String.format("%f", (float) (base_y + (map[0][1] - min_y) * scale_y)));
- path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
- for (int i = 1; i < map.length; i++) {
- Log.d(TAG, "DrawMap to X = " + (float) (base_x + (map[i][0] - min_x) * scale_x) + " Y = " + (float) (base_y + (map[i][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
- }
- path.close();
- } else if (map.length == 9) {
- path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[8][0] - min_x) * scale_x), (float) (base_y + (map[8][1] - min_y) * scale_y));
+ if (map.length < 9) {
+ Log.d(TAG, "DrawMap X = " + String.format("%f", (float) (base_x + (map[0][0] - min_x) * scale_x)) + " Y = " + String.format("%f", (float) (base_y + (map[0][1] - min_y) * scale_y)));
+ path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
+ for (int i = 1; i < map.length; i++) {
+ Log.d(TAG, "DrawMap to X = " + (float) (base_x + (map[i][0] - min_x) * scale_x) + " Y = " + (float) (base_y + (map[i][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
+ }
+ path.close();
+ } else if (map.length == 9) {
+ path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[8][0] - min_x) * scale_x), (float) (base_y + (map[8][1] - min_y) * scale_y));
- path.moveTo((float) (base_x + (map[2][0] - min_x) * scale_x), (float) (base_y + (map[2][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[1][0] - min_x) * scale_x), (float) (base_y + (map[1][1] - min_y) * scale_y));
+ path.moveTo((float) (base_x + (map[2][0] - min_x) * scale_x), (float) (base_y + (map[2][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[1][0] - min_x) * scale_x), (float) (base_y + (map[1][1] - min_y) * scale_y));
- path.moveTo((float) (base_x + (map[3][0] - min_x) * scale_x), (float) (base_y + (map[3][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[4][0] - min_x) * scale_x), (float) (base_y + (map[4][1] - min_y) * scale_y));
+ path.moveTo((float) (base_x + (map[3][0] - min_x) * scale_x), (float) (base_y + (map[3][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[4][0] - min_x) * scale_x), (float) (base_y + (map[4][1] - min_y) * scale_y));
- path.moveTo((float) (base_x + (map[6][0] - min_x) * scale_x), (float) (base_y + (map[6][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[5][0] - min_x) * scale_x), (float) (base_y + (map[5][1] - min_y) * scale_y));
+ path.moveTo((float) (base_x + (map[6][0] - min_x) * scale_x), (float) (base_y + (map[6][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[5][0] - min_x) * scale_x), (float) (base_y + (map[5][1] - min_y) * scale_y));
- path.moveTo((float) (base_x + (map[7][0] - min_x) * scale_x), (float) (base_y + (map[7][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map[8][0] - min_x) * scale_x), (float) (base_y + (map[8][1] - min_y) * scale_y));
- } else {
- path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
- for (int i = 1; i < map.length; i++) {
- path.lineTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
- }
+ path.moveTo((float) (base_x + (map[7][0] - min_x) * scale_x), (float) (base_y + (map[7][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[8][0] - min_x) * scale_x), (float) (base_y + (map[8][1] - min_y) * scale_y));
+ } else {
+ path.moveTo((float) (base_x + (map[0][0] - min_x) * scale_x), (float) (base_y + (map[0][1] - min_y) * scale_y));
+ for (int i = 1; i < map.length; i++) {
+ path.lineTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
+ }
- if (map_other.length>9){
- path.moveTo((float) (base_x + (map_other[0][0] - min_x) * scale_x), (float) (base_y + (map_other[0][1] - min_y) * scale_y));
- for (int i = 1; i < map.length; i++) {
- path.lineTo((float) (base_x + (map_other[i][0] - min_x) * scale_x), (float) (base_y + (map_other[i][1] - min_y) * scale_y));
- }
- }
-
- for (int i = 0, j = 0; i < map.length && j < map_other.length; i++, j++) {
- path.moveTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (map_other[j][0] - min_x) * scale_x), (float) (base_y + (map_other[j][1] - min_y) * scale_y));
- }
-
+ if (map_other.length>9){
+ path.moveTo((float) (base_x + (map_other[0][0] - min_x) * scale_x), (float) (base_y + (map_other[0][1] - min_y) * scale_y));
+ for (int i = 1; i < map.length; i++) {
+ path.lineTo((float) (base_x + (map_other[i][0] - min_x) * scale_x), (float) (base_y + (map_other[i][1] - min_y) * scale_y));
}
- canvas2.drawPath(path, paint);
+ }
- path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y));
- for (int i = 1; i < body.size(); i++){
- Log.d(TAG, "for 寰幆 DrawMap to X = " + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x)+ " Y = " + (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
- path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
- }
+ for (int i = 0, j = 0; i < map.length && j < map_other.length; i++, j++) {
+ path.moveTo((float) (base_x + (map[i][0] - min_x) * scale_x), (float) (base_y + (map[i][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map_other[j][0] - min_x) * scale_x), (float) (base_y + (map_other[j][1] - min_y) * scale_y));
+ }
- path.close();
+ }
+ canvas2.drawPath(path, paint);
- canvas2.drawPath(path, paint);
+ path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y));
+ for (int i = 1; i < body.size(); i++){
+ Log.d(TAG, "for 寰幆 DrawMap to X = " + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x)+ " Y = " + (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
+ }
- paint.setStyle(Paint.Style.FILL_AND_STROKE);
+ path.close();
- if (osdHeading != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 170);
- pathText.lineTo(700, 170);
- canvas2.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ canvas2.drawPath(path, paint);
- if (osdMoveDirect != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 30);
- pathText.lineTo(700, 30);
- canvas2.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
- if (osdRtkSpeed != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 240);
- pathText.lineTo(700, 240);
- canvas2.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ if (osdHeading != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 170);
+ pathText.lineTo(700, 170);
+ canvas2.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
- if (osdQf != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 120);
- pathText.lineTo(700, 120);
- canvas2.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ if (osdMoveDirect != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 30);
+ pathText.lineTo(700, 30);
+ canvas2.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdRtkSpeed != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 240);
+ pathText.lineTo(700, 240);
+ canvas2.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdQf != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 120);
+ pathText.lineTo(700, 120);
+ canvas2.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
{
BigDecimal bd = new BigDecimal(gpsSpeed);
@@ -408,30 +412,138 @@
canvas2.drawTextOnPath("GPS閫熷害:" + bd, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
}
- // 鎻愪氦鐢诲竷
- Canvas canvas = holder.lockCanvas();
- if (canvas != null){
+ // 鎻愪氦鐢诲竷
+ Canvas canvas = holder.lockCanvas();
+ if (canvas != null){
- canvas.drawBitmap(bmp, 0, 0, paint);
- holder.unlockCanvasAndPost(canvas);
- }
+ canvas.drawBitmap(bmp, 0, 0, paint);
+ holder.unlockCanvasAndPost(canvas);
+ }
}
- public void DrawMapAll(List<Double> mainAnt, final double[][][] map, final double[][] car,
- List<Integer>body, List<Integer> tire) {
- if (canvas2 == null || bmp == null) {
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()){
+ case R.id.btn_reduce:
+
+ if (pixels < 5){
+ pixels = 5;
+ Toast.makeText(_mActivity, "宸茬粡鏄渶灏忎簡锛屼笉鑳藉啀灏忎簡", Toast.LENGTH_SHORT).show();
+ }else{
+ pixels -= 5;
+ }
+ break;
+ case R.id.btn_amplify:
+ if (pixels >80){
+ Toast.makeText(_mActivity, "宸茬粡鏄渶澶т簡", Toast.LENGTH_SHORT).show();
+ pixels = 80;
+ }else{
+ pixels+=5;
+ }
+ break;
+ }
+ }
+
+ class PointF {
+ double x;
+ double y;
+
+ public PointF(double x, double y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ double getX() {
+ return x;
+ }
+
+ double getY() {
+ return y;
+ }
+
+ void setX(double x) {
+ this.x = x;
+ }
+
+ void setY(double y) {
+ this.y = y;
+ }
+ }
+
+ public PointF rotatePoint(PointF oldPoint, PointF centre, double degree) {
+ PointF newPoint = new PointF(0, 0);
+
+ newPoint.setX( (oldPoint.getX()-centre.getX())*Math.cos(Math.toRadians(degree)) - (oldPoint.getY()-centre.getY())*Math.sin(Math.toRadians(degree)) + centre.getX() );
+ newPoint.setY ( (oldPoint.getX()-centre.getX())*Math.sin(Math.toRadians(degree)) + (oldPoint.getY()-centre.getY())*Math.cos(Math.toRadians(degree)) + centre.getY() );
+
+ return newPoint;
+ }
+
+
+ public void DrawMapAll(double yaw, List<Double> mainAnt, double[][][] map, double [][]map_other, double[][] car,
+ List<Integer>body, List<Integer> tire) {
+ if (canvas2 == null || bmp == null || bmp2 == null || canvas3 == null) {
return;
}
long scale_x,scale_y;
// _mActivity.runOnUiThread(new Runnable() {
// @Override
// public void run() {
- double base_x = 300, base_y = 20;
- double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
+ double base_x = 300, base_y = 20;
+ double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
// Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length);
+ PointF mainPoint = new PointF(mainAnt.get(0), mainAnt.get(1));
+
+// Log.d(TAG, String.format("涓诲ぉ绾� X = %f Y = %f 鏃嬭浆瑙掑害 %f", mainPoint.getX(), mainPoint.getY(), yaw));
for (int x = 0; x < map.length; x++) {
+ for (int j = 0; j < map[x].length; j++) {
+ PointF oldPoint = new PointF(map[x][j][0], map[x][j][1]);
+
+ PointF newPoint = rotatePoint(oldPoint, mainPoint, yaw );
+
+ map[x][j][0] = newPoint.getX();
+ map[x][j][1] = newPoint.getY();
+
+ map[x][j][0] = map[x][j][0] - mainPoint.getX();
+ map[x][j][1] = map[x][j][1] - mainPoint.getY();
+ map[x][j][1] = -map[x][j][1];
+ }
+ }
+
+ for (int i = 0; i < car.length; i++) {
+ PointF oldPoint = new PointF(car[i][0], car[i][1]);
+ PointF newPoint = rotatePoint(oldPoint, mainPoint, yaw );
+ car[i][0] = newPoint.getX();
+ car[i][1] = newPoint.getY();
+
+ car[i][0] = car[i][0] - mainPoint.getX();
+ car[i][1] = car[i][1] - mainPoint.getY();
+ car[i][1] = -car[i][1];
+ }
+
+ for (int i = 0; i < map_other.length; i++) {
+ PointF oldPoint = new PointF(map_other[i][0], map_other[i][1]);
+ PointF newPoint = rotatePoint(oldPoint, mainPoint, yaw );
+ map_other[i][0] = newPoint.getX();
+ map_other[i][1] = newPoint.getY();
+
+ map_other[i][0] = map_other[i][0] - mainPoint.getX();
+ map_other[i][1] = map_other[i][1] - mainPoint.getY();
+ map_other[i][1] = -map_other[i][1];
+ }
+
+ scale_x = Math.round(Math.abs(pixels / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) ));
+ scale_y = scale_x;
+
+ base_x = bmp.getWidth() / 2;
+ base_y = bmp.getHeight() * 7 / 10;
+
+ Log.d(TAG, String.format("DrawMapAll scale_x = %d 杞﹀ご鎹� = %f", scale_x, Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2))));
+
+/* for (int x = 0; x < map.length; x++) {
for (int j = 0; j < map[x].length; j++) {
if (x == 0&&j==0) {
max_x = map[0][0][0];
@@ -505,7 +617,7 @@
scale_x = scale_y;
} else {
scale_y = scale_x;
- }
+ }*/
// Log.d(TAG, "DrawMapAll scale_x " + scale_x + " scale_y " + scale_y);
@@ -517,39 +629,34 @@
}
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setColor(Color.BLUE);
-
- canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (0 - mainAnt.get(1) - min_y) * scale_y), 2, paint);
+// canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (mainAnt.get(1) - min_y) * scale_y), 2, paint);
+ canvas2.drawCircle((float) base_x, (float) base_y, 2, paint);
paint.setColor(Color.RED);
- canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint);
- canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint);
+// canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint);
+// canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint);
+// canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint);
+// canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint);
-
+ canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0]) * scale_x), (float) (base_y + (car[tire.get(0)][1]) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0]) * scale_x), (float) (base_y + (car[tire.get(1)][1]) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0]) * scale_x), (float) (base_y + (car[tire.get(2)][1]) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0]) * scale_x), (float) (base_y + (car[tire.get(3)][1]) * scale_y), 2.5f, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLACK);
-
-
-
-
Path path = new Path();
for (int k = 0; k < map.length; k++) {
-
-
-
-
Log.i(TAG, String.format("all DrawMap: map[%d].length=[%d]",k,map[k].length));
if (map[k].length < 9) {
// Log.d(TAG, String.format("map[%d][0][0]=%f,X=%f",k,map[k][0][0], (float) (base_x + (map[k][0][0] - min_x) * scale_x)) + String.format("map[%d][0][1]=%f,Y=%f",k,map[k][0][1], (float) (base_y + (map[k][0][1] - min_y) * scale_y)));
- path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y));
+ path.moveTo((float) (base_x + (map[k][0][0]) * scale_x), (float) (base_y + (map[k][0][1]) * scale_y));
for (int i = 1; i < map[k].length; i++) {
// Log.i(TAG,String.format("map[%d][%d][0]=%f,to X=%f",k,i,map[k][i][0],(float) (base_x + (map[k][i][0] - min_x) * scale_x)));
// Log.i(TAG,String.format("map[%d][%d][1]=%f,to Y=%f",k,i,map[k][i][1],(float) (base_y + (map[k][i][1] - min_y) * scale_y)));
- path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][i][0]) * scale_x), (float) (base_y + (map[k][i][1]) * scale_y));
}
path.close();
} else if (map[k].length == 9) {
@@ -586,54 +693,54 @@
}
}
-
-
}
canvas2.drawPath(path, paint);
- path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y));
- for (int i = 1; i < body.size(); i++){
+ path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y));
+ for (int i = 1; i < body.size(); i++){
// Log.d(TAG, "for 寰幆 DrawMap to X = " + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x)+ " Y = " + (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
- Log.i(TAG,String.format("car[%d][0]=%f,to X =%f,car[%d][1]=%f,to Y=%f",i,car[body.get(i)][0],
- (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x),i,car[body.get(i)][1],(float) (base_y + (car[body.get(i)][1] - min_y) * scale_y)));
- path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
- }
+ Log.i(TAG,String.format("car[%d][0]=%f,to X =%f,car[%d][1]=%f,to Y=%f",i,car[body.get(i)][0],
+ (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x),i,car[body.get(i)][1],(float) (base_y + (car[body.get(i)][1] - min_y) * scale_y)));
+ path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
+ }
- path.close();
+ path.close();
- canvas2.drawPath(path, paint);
+ canvas2.drawPath(path, paint);
- paint.setStyle(Paint.Style.FILL_AND_STROKE);
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
- if (osdHeading != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 170);
- pathText.lineTo(700, 170);
- canvas2.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ canvas3.drawColor(Color.RED);
- if (osdMoveDirect != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 30);
- pathText.lineTo(700, 30);
- canvas2.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ if (osdHeading != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 170);
+ pathText.lineTo(700, 170);
+ canvas3.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
- if (osdRtkSpeed != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 240);
- pathText.lineTo(700, 240);
- canvas2.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ if (osdMoveDirect != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 30);
+ pathText.lineTo(700, 30);
+ canvas3.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
- if (osdQf != null) {
- Path pathText = new Path();
- pathText.moveTo(10, 120);
- pathText.lineTo(700, 120);
- canvas2.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
- }
+ if (osdRtkSpeed != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 240);
+ pathText.lineTo(700, 240);
+ canvas3.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdQf != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 120);
+ pathText.lineTo(700, 120);
+ canvas3.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
{
BigDecimal bd = new BigDecimal(gpsSpeed);
@@ -643,21 +750,254 @@
pathText.moveTo(10, 70);
pathText.lineTo(700, 70);
- canvas2.drawTextOnPath("GPS閫熷害:" + bd, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ canvas3.drawTextOnPath("GPS閫熷害:" + bd, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
}
- // 鎻愪氦鐢诲竷
- Canvas canvas = holder.lockCanvas();
- if (canvas != null){
+ // 鎻愪氦鐢诲竷
+ Canvas canvas = holder.lockCanvas();
+ if (canvas != null){
- canvas.drawBitmap(bmp, 0, 0, paint);
- holder.unlockCanvasAndPost(canvas);
- }
+ canvas.drawBitmap(bmp, 0, 0, paint);
+ canvas.drawBitmap(bmp2, screen_width*2/3, 0, paint);
+ holder.unlockCanvasAndPost(canvas);
+ }
// }
// });
}
+ /*
+ public void DrawMapAll(List<Double> mainAnt, final double[][][] map, final double[][] car,
+ List<Integer>body, List<Integer> tire) {
+ if (canvas2 == null || bmp == null) {
+ return;
+ }
+ long scale_x,scale_y;
+ // _mActivity.runOnUiThread(new Runnable() {
+ // @Override
+ // public void run() {
+ double base_x = 300, base_y = 20;
+ double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
+ // Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length);
+
+
+ for (int x = 0; x < map.length; x++) {
+ for (int j = 0; j < map[x].length; j++) {
+ if (x == 0&&j==0) {
+ max_x = map[0][0][0];
+ min_x = map[0][0][0];
+ max_y = map[0][0][1];
+ min_y = map[0][0][1];
+ } else {
+ // Log.i(TAG,String.format("map[%d][%d][0]=%f",x,j,map[x][j][0]));
+ // Log.i(TAG,String.format("map[%d][%d][1]=%f",x,j,map[x][j][1]));
+ // Log.i(TAG,String.format("max_x=%f,max_y=%f,min_x=%f,min_y=%f",max_x,max_y,min_x,min_y));
+ if (max_x < map[x][j][0]) {
+
+ max_x = map[x][j][0];
+ }
+ if (min_x > map[x][j][0]) {
+ min_x = map[x][j][0];
+ }
+ if (max_y < map[x][j][1]) {
+ max_y = map[x][j][1];
+ }
+ if (min_y > map[x][j][1]) {
+ min_y = map[x][j][1];
+ }
+ }
+ }
+ }
+
+ // Log.d(TAG, "all 鍦板浘DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
+ if (map_other.length>9){
+ for (int i = 0; i < map_other.length; i++) {
+
+ if (max_x < map_other[i][0]) {
+ max_x = map_other[i][0];
+ }
+ if (min_x > map_other[i][0]) {
+ min_x = map_other[i][0];
+ }
+ if (max_y < map_other[i][1]) {
+ max_y = map_other[i][1];
+ }
+ if (min_y > map_other[i][1]) {
+ min_y = map_other[i][1];
+ }
+ }
+ }
+
+
+ // Log.d(TAG, "DrawMap鍙﹀涓�鏉℃洸绾� max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
+
+ for (int i = 0; i < car.length; i++) {
+ if (max_x < car[i][0]) {
+ max_x = car[i][0];
+ }
+ if (min_x > car[i][0]) {
+ min_x = car[i][0];
+ }
+ if (max_y < car[i][1]) {
+ max_y = car[i][1];
+ }
+ if (min_y > car[i][1]) {
+ min_y = car[i][1];
+ }
+ }
+
+ // Log.d(TAG, "DrawMapAll 鍜岃溅姣攎ax_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
+
+ scale_x = Math.round((screen_width - base_x - 10) / (max_x - min_x));
+ scale_y = Math.round((screen_height - base_y - 10) / (max_y - min_y));
+
+ if (scale_x >= scale_y) {
+ scale_x = scale_y;
+ } else {
+ scale_y = scale_x;
+ }
+
+ // Log.d(TAG, "DrawMapAll scale_x " + scale_x + " scale_y " + scale_y);
+
+
+ canvas2.drawColor(Color.WHITE);
+
+ if (paint == null || canvas2==null){
+ return;
+ }
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
+ paint.setColor(Color.BLUE);
+
+ canvas2.drawCircle((float) (base_x + (mainAnt.get(0) - min_x) * scale_x), (float) (base_y + (0 - mainAnt.get(1) - min_y) * scale_y), 2, paint);
+
+ paint.setColor(Color.RED);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(0)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(1)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(1)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(2)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(2)][1] - min_y) * scale_y), 2.5f, paint);
+ canvas2.drawCircle((float) (base_x + (car[tire.get(3)][0] - min_x) * scale_x), (float) (base_y + (car[tire.get(3)][1] - min_y) * scale_y), 2.5f, paint);
+
+ paint.setStyle(Paint.Style.STROKE);
+ paint.setColor(Color.BLACK);
+
+ Path path = new Path();
+
+ for (int k = 0; k < map.length; k++) {
+ Log.i(TAG, String.format("all DrawMap: map[%d].length=[%d]",k,map[k].length));
+ if (map[k].length < 9) {
+ // Log.d(TAG, String.format("map[%d][0][0]=%f,X=%f",k,map[k][0][0], (float) (base_x + (map[k][0][0] - min_x) * scale_x)) + String.format("map[%d][0][1]=%f,Y=%f",k,map[k][0][1], (float) (base_y + (map[k][0][1] - min_y) * scale_y)));
+ path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y));
+ for (int i = 1; i < map[k].length; i++) {
+ // Log.i(TAG,String.format("map[%d][%d][0]=%f,to X=%f",k,i,map[k][i][0],(float) (base_x + (map[k][i][0] - min_x) * scale_x)));
+ // Log.i(TAG,String.format("map[%d][%d][1]=%f,to Y=%f",k,i,map[k][i][1],(float) (base_y + (map[k][i][1] - min_y) * scale_y)));
+ path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y));
+ }
+ path.close();
+ } else if (map[k].length == 9) {
+ path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][8][0] - min_x) * scale_x), (float) (base_y + (map[k][8][1] - min_y) * scale_y));
+
+ path.moveTo((float) (base_x + (map[k][2][0] - min_x) * scale_x), (float) (base_y + (map[k][2][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][1][0] - min_x) * scale_x), (float) (base_y + (map[k][1][1] - min_y) * scale_y));
+
+ path.moveTo((float) (base_x + (map[k][3][0] - min_x) * scale_x), (float) (base_y + (map[k][3][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][4][0] - min_x) * scale_x), (float) (base_y + (map[k][4][1] - min_y) * scale_y));
+
+ path.moveTo((float) (base_x + (map[k][6][0] - min_x) * scale_x), (float) (base_y + (map[k][6][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][5][0] - min_x) * scale_x), (float) (base_y + (map[k][5][1] - min_y) * scale_y));
+
+ path.moveTo((float) (base_x + (map[k][7][0] - min_x) * scale_x), (float) (base_y + (map[k][7][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map[k][8][0] - min_x) * scale_x), (float) (base_y + (map[k][8][1] - min_y) * scale_y));
+ } else {
+ path.moveTo((float) (base_x + (map[k][0][0] - min_x) * scale_x), (float) (base_y + (map[k][0][1] - min_y) * scale_y));
+ for (int i = 1; i < map[k].length; i++) {
+ path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y));
+ }
+
+ if (map_other.length>9){
+ path.moveTo((float) (base_x + (map_other[0][0] - min_x) * scale_x), (float) (base_y + (map_other[0][1] - min_y) * scale_y));
+ for (int i = 1; i < map[k].length; i++) {
+ path.lineTo((float) (base_x + (map_other[i][0] - min_x) * scale_x), (float) (base_y + (map_other[i][1] - min_y) * scale_y));
+ }
+ }
+
+ for (int i = 0, j = 0; i < map[k].length && j < map_other.length; i++, j++) {
+ path.moveTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y));
+ path.lineTo((float) (base_x + (map_other[j][0] - min_x) * scale_x), (float) (base_y + (map_other[j][1] - min_y) * scale_y));
+ }
+
+ }
+
+
+ }
+
+ canvas2.drawPath(path, paint);
+
+ path.moveTo((float) (base_x + (car[body.get(0)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(0)][1] - min_y) * scale_y));
+ for (int i = 1; i < body.size(); i++){
+ // Log.d(TAG, "for 寰幆 DrawMap to X = " + (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x)+ " Y = " + (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
+ Log.i(TAG,String.format("car[%d][0]=%f,to X =%f,car[%d][1]=%f,to Y=%f",i,car[body.get(i)][0],
+ (float) (base_x + (car[body.get(i)][0] - min_x) * scale_x),i,car[body.get(i)][1],(float) (base_y + (car[body.get(i)][1] - min_y) * scale_y)));
+ path.lineTo((float) (base_x + (car[body.get(i)][0] - min_x) * scale_x), (float) (base_y + (car[body.get(i)][1] - min_y) * scale_y));
+ }
+
+ path.close();
+
+ canvas2.drawPath(path, paint);
+
+
+ paint.setStyle(Paint.Style.FILL_AND_STROKE);
+
+ if (osdHeading != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 170);
+ pathText.lineTo(700, 170);
+ canvas2.drawTextOnPath(osdHeading, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdMoveDirect != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 30);
+ pathText.lineTo(700, 30);
+ canvas2.drawTextOnPath(osdMoveDirect, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdRtkSpeed != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 240);
+ pathText.lineTo(700, 240);
+ canvas2.drawTextOnPath(osdRtkSpeed, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ if (osdQf != null) {
+ Path pathText = new Path();
+ pathText.moveTo(10, 120);
+ pathText.lineTo(700, 120);
+ canvas2.drawTextOnPath(osdQf, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+ {
+ BigDecimal bd = new BigDecimal(gpsSpeed);
+ bd = bd.setScale(3, BigDecimal.ROUND_HALF_UP);
+
+ Path pathText = new Path();
+ pathText.moveTo(10, 70);
+ pathText.lineTo(700, 70);
+
+ canvas2.drawTextOnPath("GPS閫熷害:" + bd, pathText, 0, 0, paint);//閫嗘椂閽堢敓鎴�
+ }
+
+
+ // 鎻愪氦鐢诲竷
+ Canvas canvas = holder.lockCanvas();
+ if (canvas != null){
+
+ canvas.drawBitmap(bmp, 0, 0, paint);
+ holder.unlockCanvasAndPost(canvas);
+ }
+ // }
+ // });
+ }
+ */
int line = 0;
int map_line = 0;
int map_line_other = 0;
@@ -743,7 +1083,7 @@
if ((i % 2) == 0) {
car[line][0] = points.get(i);
} else {
- double value = 0 - points.get(i);
+ double value = points.get(i);
car[line][1] = value;
line++;
}
@@ -752,7 +1092,6 @@
map_id = timeCarPos.getMap_id();
List<Double> mainAnt = timeCarPos.getMain_ant();
- Point mainPoint = new Point(mainAnt.get(0), mainAnt.get(1));
List<Integer> tire1 = timeCarPos.getLeft_front_tire();
List<Integer> tire2 = timeCarPos.getRight_front_tire();
List<Integer> tire3 = timeCarPos.getLeft_rear_tire();
@@ -761,6 +1100,8 @@
List<Integer> body = timeCarPos.getBody();
List<Integer> tire = new ArrayList<>();
+
+ double yaw = timeCarPos.getHeading();
tire.add(tire1.get(0));
tire.add(tire2.get(0));
@@ -790,140 +1131,109 @@
Type type = new TypeToken<List<ExamMap>>(){}.getType();
if (buffer != null){
- examMaps= gson.fromJson(buffer.toString().trim(), type);
+ examMaps= gson.fromJson(buffer.toString().trim(), type);
}else{
examMaps = gson.fromJson(newmap.trim(),type);
}
+ map_id = -1;
+ if (map_id == -1){
+ allMap =new double[examMaps.size()][][];
+ for (int i = 0; i < examMaps.size(); i++) {
+ ExamMap examMap = examMaps.get(i);
- if (map_id == -1){
- allMap =new double[examMaps.size()][][];
- for (int i = 0; i < examMaps.size(); i++) {
- ExamMap examMap = examMaps.get(i);
-
- List<ExamMap.PointBean> pointBeanList = examMap.getPoint();
-
- for(int j=0; j<pointBeanList.size();j++){
- List<Double> xys = pointBeanList.get(j).getXy();
- if(j==0){
- map = new double[xys.size()/2][2];
- allMap[sanwei] = new double[xys.size()/2][2];
- map_line = 0;
- for (int k=0; k<xys.size();k++){
- if ((k % 2) == 0) {
- map[map_line][0] = xys.get(k);
- } else {
- double value = 0 - xys.get(k);
- map[map_line][1] = value;
- map_line++;
- }
- }
- allMap[sanwei] = map.clone();
- sanwei++;
-
- }else{
-// MyLog.i(TAG,"all鏀寔鏇茬嚎");
- map_other = new double[xys.size()/2][2];
- for (int k=0; k<xys.size();k++){
- if ((k % 2) == 0) {
- map_other[map_line_other][0] = xys.get(k);
- } else {
- double value = 0 - xys.get(k);
- map_other[map_line_other][1] = value;
- map_line_other++;
- }
- }
- }
-
-
-
- }
-
-
- }
- DrawMapAll(mainAnt,allMap,car,body,tire);
- }else{
- for (int i = 0; i < examMaps.size(); i++) {
- ExamMap examMap = examMaps.get(i);
- if (map_id == examMap.getId()){
List<ExamMap.PointBean> pointBeanList = examMap.getPoint();
for(int j=0; j<pointBeanList.size();j++){
List<Double> xys = pointBeanList.get(j).getXy();
if(j==0){
map = new double[xys.size()/2][2];
-
-
-
+ allMap[sanwei] = new double[xys.size()/2][2];
+ map_line = 0;
for (int k=0; k<xys.size();k++){
if ((k % 2) == 0) {
map[map_line][0] = xys.get(k);
} else {
double value = xys.get(k);
- Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + k);
map[map_line][1] = value;
map_line++;
}
}
- Log.i(TAG,String.format("涓嬮潰寮�濮嬫棆杞紝map.length=%d",map.length));
- Point point2 = new Point(map[0][0],map[0][1]);
- double deg = 0.0;
- switch (map.length){
-
- case 8:
- Point point1 = new Point(map[map.length-1][0],map[map.length-1][1]);
- deg = Utils.YawOf(point2,point1);
- deg +=270;
- for (int k = 0; k < map.length; k++) {
- Point point11 = new Point(map[k][0],map[k][1]);
- Point point = Utils.rotatePoint(point11,point2,deg);
- map[k][0] = point.getX();
- map[k][1] = 0-point.getY();
- Log.i(TAG,String.format("鏃嬭浆鍚庣殑鍊糾ap[%d][0]=%f,map[%d][1]=%f,deg=%f",k,map[k][0],k,map[k][1],deg));
- }
- break;
- case 9:
- break;
- case 6:
- break;
- default:
- break;
- }
- for (int k = 0; k < car.length; k++) {
- Point oldPoint = new Point(car[k][0], car[k][1]);
- Point newPoint = Utils.rotatePoint(oldPoint, point2, deg );
- car[k][0] = newPoint.getX();
- car[k][1] = newPoint.getY();
-
-// car[k][0] = car[k][0] - point2.getX();
-// car[k][1] = car[k][1] - point2.getY();
-// car[k][1] = -car[k][1];
- Log.i(TAG,String.format("鏃嬭浆鍚庣殑鍊糲ar[%d][0]=%f,car[%d][1]=%f,deg=%f",k,car[k][0],k,car[k][1],deg));
- }
+ allMap[sanwei] = map.clone();
+ sanwei++;
}else{
- MyLog.i(TAG,"鏆傛椂鏀寔鏇茬嚎");
+// MyLog.i(TAG,"all鏀寔鏇茬嚎");
map_other = new double[xys.size()/2][2];
for (int k=0; k<xys.size();k++){
if ((k % 2) == 0) {
map_other[map_line_other][0] = xys.get(k);
} else {
- double value = 0 - xys.get(k);
+ double value = xys.get(k);
map_other[map_line_other][1] = value;
map_line_other++;
}
}
- break;
}
}
- break;
- }
- }
- DrawMap(mainAnt, map, car, body, tire);
- }
+
+ }
+
+ double [][]mapOther;
+
+ mapOther = map_other.clone();
+
+ DrawMapAll(yaw, mainAnt,allMap, mapOther, car,body,tire);
+ }else{
+ for (int i = 0; i < examMaps.size(); i++) {
+ ExamMap examMap = examMaps.get(i);
+ if (map_id == examMap.getId()){
+ List<ExamMap.PointBean> pointBeanList = examMap.getPoint();
+
+ for(int j=0; j<pointBeanList.size();j++){
+ List<Double> xys = pointBeanList.get(j).getXy();
+ if(j==0){
+ map = new double[xys.size()/2][2];
+
+
+
+ for (int k=0; k<xys.size();k++){
+ if ((k % 2) == 0) {
+ map[map_line][0] = xys.get(k);
+ } else {
+ double value = 0 - xys.get(k);
+ Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + k);
+ map[map_line][1] = value;
+ map_line++;
+ }
+ }
+ }else{
+ MyLog.i(TAG,"鏆傛椂鏀寔鏇茬嚎");
+ map_other = new double[xys.size()/2][2];
+ for (int k=0; k<xys.size();k++){
+ if ((k % 2) == 0) {
+ map_other[map_line_other][0] = xys.get(k);
+ } else {
+ double value = 0 - xys.get(k);
+ map_other[map_line_other][1] = value;
+ map_line_other++;
+ }
+ }
+ break;
+ }
+
+
+
+ }
+ break;
+ }
+ }
+
+ DrawMap(mainAnt, map, car, body, tire);
+ }
}
}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java
index 4847c6c..c1277da 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java
@@ -16,6 +16,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -45,9 +46,10 @@
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
import safeluck.drive.evaluation.util.FileUtil;
-public class RoadDriveMapFragmentaa extends SupportFragment {
+public class RoadDriveMapFragmentaa extends SupportFragment implements View.OnClickListener {
private static final int ALL_MAP = 100;
+ private int pixels = 80;
private boolean isDrawing = false;
private StringBuffer buffer = null;//瀛樻斁鍦板浘鐨刡uffer
private ICEventListener rtcmicEventListener = new ICEventListener() {
@@ -137,20 +139,13 @@
}
private int avaliableHeight,avalibleWidth;
private void initView(View view) {
- toolbar = view.findViewById(R.id.toolbar);
- toolbar.setTitle("绠�鍗曞湴鍥�");
- toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- _mActivity.onBackPressed();
- }
- });
+
avaliableHeight= getResources().getDisplayMetrics().heightPixels;
avalibleWidth = getResources().getDisplayMetrics().widthPixels;
Log.i(TAG, "initView: aliwidht="+avalibleWidth+" height="+avaliableHeight);
mSurfaceView = view.findViewById(R.id.surfaceview);
-
+ view.findViewById(R.id.btn_reduce).setOnClickListener(this);
+ view.findViewById(R.id.btn_amplify).setOnClickListener(this);
holder = mSurfaceView.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@@ -268,7 +263,7 @@
car[i][1] = -car[i][1];
}
- scale_x = Math.round(Math.abs(80 / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) ));
+ scale_x = Math.round(Math.abs(pixels / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) ));
scale_y = scale_x;
base_x = bmp.getWidth() / 2;
@@ -696,5 +691,27 @@
CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_DEBUG_TXT);
CEventCenter.onBindEvent(false, speedListener, Constant.BIND_RTK_SPEED_TOPIC);
}
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()){
+ case R.id.btn_reduce:
+
+ if (pixels < 5){
+ pixels = 5;
+ Toast.makeText(_mActivity, "宸茬粡鏄渶灏忎簡锛屼笉鑳藉啀灏忎簡", Toast.LENGTH_SHORT).show();
+ }else{
+ pixels -= 5;
+ }
+ break;
+ case R.id.btn_amplify:
+ if (pixels >80){
+ Toast.makeText(_mActivity, "宸茬粡鏄渶澶т簡", Toast.LENGTH_SHORT).show();
+ pixels = 80;
+ }else{
+ pixels+=5;
+ }
+ break;
+ }
+ }
}
diff --git a/app/src/main/res/layout/layout_mapfragment.xml b/app/src/main/res/layout/layout_mapfragment.xml
index 94b9469..edc85b3 100644
--- a/app/src/main/res/layout/layout_mapfragment.xml
+++ b/app/src/main/res/layout/layout_mapfragment.xml
@@ -1,26 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
- <com.google.android.material.appbar.AppBarLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:theme="@style/AppTheme.AppBarOverlay">
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/toolbar"
- android:layout_width="match_parent"
- android:layout_height="?attr/actionBarSize"
- android:background="?attr/colorPrimary"
- android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
- app:popupTheme="@style/AppTheme.NoActionBar.PopupOverlay"
- app:titleTextAppearance="@style/Toolbar_TextAppearance_White"/>
-
- </com.google.android.material.appbar.AppBarLayout>
<SurfaceView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/surfaceview"/>
-</LinearLayout>
\ No newline at end of file
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|left"
+ android:id="@+id/btn_amplify"
+ android:background="@drawable/btn_state_save"
+ android:text="鏀惧ぇ"/>
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|left"
+ android:id="@+id/btn_reduce"
+ android:background="@drawable/btn_state_save"
+ android:layout_marginLeft="120dp"
+ android:text="缂╁皬"/>
+</FrameLayout>
\ No newline at end of file
--
Gitblit v1.8.0