fix: 修改在线多线数据在点击开始采集后程序崩溃的问题,原因为未针对此类型数据为POIEntity赋代表点X和Y值

This commit is contained in:
2022-03-09 15:56:39 +08:00
parent 395e189ddc
commit af64163dff
5 changed files with 40 additions and 80 deletions
@@ -393,21 +393,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe
chargingStationEntity.setGeoWkt(stationBean.getGeo());
String encodeStr = stationBean.getGeo();
String geo = Geohash.getInstance().decode(encodeStr);
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng latLng = GeometryTools.createLatLng(geo);
chargingStationEntity.setX(latLng.longitude + "");
chargingStationEntity.setY(latLng.latitude + "");
break;
case "LineString": //线
case "Polygon": //面
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
chargingStationEntity.setX(latLineString.get(0).longitude + "");
chargingStationEntity.setY(latLineString.get(0).latitude + "");
break;
}
// 生成对应的x和y poiEntity.setX
GeometryTools.obitainPoiEntityXY(geo, chargingStationEntity);
//充电桩
List<ReceivedBean.BodyBean.CsTaskListBean> csTaskList = response.getBody().getCsTaskList();
if (csTaskList != null && !csTaskList.isEmpty()) {
@@ -521,21 +508,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe
polygonEntity.setGeoWkt(listBean.getGeo());
String encodeStr = listBean.getGeo();
String geo = Geohash.getInstance().decode(encodeStr);
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng latLng = GeometryTools.createLatLng(geo);
polygonEntity.setX(latLng.longitude + "");
polygonEntity.setY(latLng.latitude + "");
break;
case "LineString": //线
case "Polygon": //面
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
polygonEntity.setX(latLineString.get(0).longitude + "");
polygonEntity.setY(latLineString.get(0).latitude + "");
break;
}
// 生成对应的x和y poiEntity.setX
GeometryTools.obitainPoiEntityXY(geo, polygonEntity);
polygonEntity.setTaskStatus(1);
}
new Thread(new Runnable() {
@@ -816,21 +790,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe
poiListEntity.setGeoWkt(listBean.getGeo());
String encodeStr = listBean.getGeo();
String geo = Geohash.getInstance().decode(encodeStr);
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng latLng = GeometryTools.createLatLng(geo);
poiListEntity.setX(latLng.longitude + "");
poiListEntity.setY(latLng.latitude + "");
break;
case "LineString": //线
case "Polygon": //面
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
poiListEntity.setX(latLineString.get(0).longitude + "");
poiListEntity.setY(latLineString.get(0).latitude + "");
break;
}
// 生成对应的x和y poiEntity.setX
GeometryTools.obitainPoiEntityXY(geo, poiListEntity);
if (statusId == 1 || statusId == 5) {
InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity);
}
@@ -946,21 +907,8 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe
poiListEntity.setGeoWkt(listBean.getGeo());
String encodeStr = listBean.getGeo();
String geo = Geohash.getInstance().decode(encodeStr);
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng latLng = GeometryTools.createLatLng(geo);
poiListEntity.setX(latLng.longitude + "");
poiListEntity.setY(latLng.latitude + "");
break;
case "LineString": //线
case "Polygon": //面
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
poiListEntity.setX(latLineString.get(0).longitude + "");
poiListEntity.setY(latLineString.get(0).latitude + "");
break;
}
// 生成对应的x和y poiEntity.setX
GeometryTools.obitainPoiEntityXY(geo, poiListEntity);
if (statusId == 1 || statusId == 5) {
InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity);
}
@@ -2100,21 +2100,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
poiListEntity.setIsExclusive(listBean.getIsExclusive());
String beanGeo = listBean.getGeo();
String geo = Geohash.getInstance().decode(beanGeo);
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng lng = GeometryTools.createLatLng(geo);
poiListEntity.setX(lng.longitude + "");
poiListEntity.setY(lng.latitude + "");
break;
case "LineString": //线
case "Polygon": //面
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
poiListEntity.setX(latLineString.get(0).longitude + "");
poiListEntity.setY(latLineString.get(0).latitude + "");
break;
}
// 生成对应的x和y poiEntity.setX
GeometryTools.obitainPoiEntityXY(geo, poiListEntity);
if (isBack) {
initMarker(poiListEntity, true);
switch (poiListEntity.getType()) {
@@ -3,6 +3,7 @@ package com.navinfo.outdoor.util;
import android.graphics.Point;
import android.util.Log;
import com.navinfo.outdoor.room.PoiEntity;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
@@ -1162,4 +1163,28 @@ public class GeometryTools {
private static boolean isEmpty(String str) {
return str == null || str.trim().equals("");
}
/**
* 根据geometry的string生成PoiEntity的代表点经纬度x和y
* */
public static void obitainPoiEntityXY(String geo, PoiEntity poiEntity) {
Geometry geometry = GeometryTools.createGeometry(geo);
switch (geometry.getGeometryType()) {
case "Point": //点
LatLng lng = GeometryTools.createLatLng(geo);
poiEntity.setX(lng.longitude + "");
poiEntity.setY(lng.latitude + "");
break;
case "LineString": //线
case "MultiLineString": // 多线
case "Polygon": //面
case "MultiPolygon": //多面
case "MultiPoint": //多点
List<LatLng> latLineString = GeometryTools.getLatLags(geo);
assert latLineString != null;
poiEntity.setX(latLineString.get(0).longitude + "");
poiEntity.setY(latLineString.get(0).latitude + "");
break;
}
}
}