From c125fc0a5ee47ef32db587899d972491231167ee Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 12 三月 2020 17:40:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | 372 +++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 333 insertions(+), 39 deletions(-)
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 a58a499..3b3d097 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -8,6 +8,7 @@
import android.graphics.Path;
import android.os.Bundle;
import android.os.Handler;
+import android.text.LoginFilter;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -124,7 +125,7 @@
private int map_id;
private double gpsSpeed = 0;
-// double map[][] = {{1, 1}, {10, 1}, {10, 10}, {1, 10}};
+ 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}};
double map_other[][] = {{-2.4065, 30.7090}, {-3.0759, 30.3599}, { -2.6023, 29.2578}, {-3.3316,28.9383},{-3.8247,30.0293},
@@ -208,7 +209,8 @@
});
}
- public void DrawMap(List<Double> mainAnt, final double[][] map, final double[][] car, List<Integer>body, List<Integer> tire) {
+ public void DrawMap(List<Double> mainAnt, final double[][] map, final double[][] car,
+ List<Integer>body, List<Integer> tire) {
if (canvas2 == null || bmp == null) {
return;
}
@@ -416,10 +418,252 @@
// }
// });
}
+ 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;
+ int sanwei = 0;
private StringBuffer stringBuffer = new StringBuffer();
class MessageRemoteService{
public int msgCode;
@@ -493,6 +737,7 @@
line = 0;
map_line = 0;
map_line_other = 0;
+ sanwei = 0;
car = new double[points.size()/2][2];
@@ -553,52 +798,101 @@
examMaps = gson.fromJson(newmap.trim(),type);
}
+ 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 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;
+ 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++;
}
-
-
-
}
- break;
+ 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];
+
+
+
+ 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);
}
+
+ }
}
}
}
--
Gitblit v1.8.0