fix: 修改在线多线数据在点击开始采集后程序崩溃的问题,原因为未针对此类型数据为POIEntity赋代表点X和Y值
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user