修改位压盖点
This commit is contained in:
parent
e4d6924c9e
commit
4db3982b83
@ -162,6 +162,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
||||
navInfoEditor.putString("refresh_token",body.getRefresh_token());
|
||||
navInfoEditor.putString("pass_word",paw);
|
||||
navInfoEditor.putString("user_name",name);
|
||||
navInfoEditor.putString("user_id",body.getUserId());
|
||||
navInfoEditor.commit();
|
||||
Constant.ACCESS_TOKEN=body.getAccess_token();
|
||||
Constant.REFRESH_TOKEN=body.getRefresh_token();
|
||||
@ -232,28 +233,6 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
|
||||
if (needGuide==1){
|
||||
Intent intent = new Intent(LoginActivity.this, GuidanceActivity.class);
|
||||
startActivity(intent);
|
||||
/* AlertDialog alertDialog = new AlertDialog.Builder(LoginActivity.this,R.style.dialog).create();
|
||||
alertDialog.show();
|
||||
WindowManager windowManager = getWindowManager();
|
||||
Display defaultDisplay = windowManager.getDefaultDisplay();
|
||||
Point point = new Point();
|
||||
defaultDisplay.getSize(point);
|
||||
Window window = alertDialog.getWindow();
|
||||
assert window != null;
|
||||
WindowManager.LayoutParams lp = ((Window) window).getAttributes();
|
||||
lp.width = point.x; // 设置宽度和高度
|
||||
lp.height = point.y;
|
||||
getWindow().getDecorView().setPadding( 0 , 0 , 0 , 0 );
|
||||
window.setAttributes(lp);
|
||||
window.setContentView(R.layout.login_task_item);
|
||||
window.findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(LoginActivity.this, GuidanceActivity.class);
|
||||
startActivity(intent);
|
||||
alertDialog.dismiss();
|
||||
}
|
||||
});*/
|
||||
}else {
|
||||
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
|
||||
Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.navinfo.outdoor.activity;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.CountDownTimer;
|
||||
@ -74,6 +76,7 @@ public class MainActivity extends BaseActivity {
|
||||
});
|
||||
private ProgressDialog pBar;
|
||||
private int progress;
|
||||
private String user_id;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
@ -117,7 +120,11 @@ public class MainActivity extends BaseActivity {
|
||||
@Override
|
||||
public void onGranted(List<String> permissions, boolean all) {
|
||||
if (all) {
|
||||
initCheckVersion();
|
||||
if (user_id!=null){
|
||||
initCheckVersion();
|
||||
}else {
|
||||
initTime();
|
||||
}
|
||||
//initTime();
|
||||
} else {
|
||||
initPermission();
|
||||
@ -288,7 +295,7 @@ public class MainActivity extends BaseActivity {
|
||||
FileOutputStream fileOutputStream = null;
|
||||
if (is != null) {
|
||||
//对apk进行保存
|
||||
File file = new File(Constant.NABISCO_APk +"NVINFO.apk");
|
||||
File file = new File(Constant.NABISCO_APk +"DTXB.apk");
|
||||
fileOutputStream = new FileOutputStream(file);
|
||||
byte[] buf = new byte[1024];
|
||||
int ch;
|
||||
@ -318,6 +325,10 @@ public class MainActivity extends BaseActivity {
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
SharedPreferences navInfo = getSharedPreferences(Constant.SHARED_PREFERENCES, Context.MODE_PRIVATE);
|
||||
user_id = navInfo.getString("user_id", null);
|
||||
Constant.ACCESS_TOKEN= navInfo.getString("access_token", null);;
|
||||
HttpInterface.initAppPath(user_id);
|
||||
initPermission();
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package com.navinfo.outdoor.activity;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
@ -54,22 +52,18 @@ import com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.Polyline;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE;
|
||||
import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER;
|
||||
import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER;
|
||||
|
||||
public class PicturesActivity extends BaseActivity implements View.OnClickListener {
|
||||
private static final CameraLogger LOG = CameraLogger.create("Picture");
|
||||
|
@ -6,19 +6,33 @@ import android.graphics.Color;
|
||||
import android.graphics.Matrix;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.kongzue.dialog.util.BaseDialog;
|
||||
import com.kongzue.dialog.v3.CustomDialog;
|
||||
import com.lzy.okgo.OkGo;
|
||||
import com.lzy.okgo.model.HttpParams;
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.adapter.MarkerAdapter;
|
||||
import com.navinfo.outdoor.api.Constant;
|
||||
import com.navinfo.outdoor.base.BaseActivity;
|
||||
import com.navinfo.outdoor.bean.JobSearchBean;
|
||||
import com.navinfo.outdoor.http.Callback;
|
||||
import com.navinfo.outdoor.http.HttpInterface;
|
||||
import com.navinfo.outdoor.http.OkGoBuilder;
|
||||
import com.navinfo.outdoor.room.PoiEntity;
|
||||
import com.navinfo.outdoor.util.Geohash;
|
||||
import com.navinfo.outdoor.util.GeometryTools;
|
||||
import com.navinfo.outdoor.util.MarkerClusterItem;
|
||||
@ -26,6 +40,7 @@ import com.navinfo.outdoor.util.MyTecentLocationSource;
|
||||
import com.tencent.map.geolocation.TencentLocation;
|
||||
import com.tencent.tencentmap.mapsdk.maps.CameraUpdate;
|
||||
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
|
||||
import com.tencent.tencentmap.mapsdk.maps.Projection;
|
||||
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
|
||||
import com.tencent.tencentmap.mapsdk.maps.TextureMapView;
|
||||
import com.tencent.tencentmap.mapsdk.maps.UiSettings;
|
||||
@ -48,6 +63,7 @@ import com.tencent.tencentmap.mapsdk.vector.utils.clustering.ClusterItem;
|
||||
import com.tencent.tencentmap.mapsdk.vector.utils.clustering.ClusterManager;
|
||||
import com.tencent.tencentmap.mapsdk.vector.utils.clustering.algo.NonHierarchicalDistanceBasedAlgorithm;
|
||||
import com.tencent.tencentmap.mapsdk.vector.utils.clustering.view.DefaultClusterRenderer;
|
||||
import com.vividsolutions.jts.awt.PointShapeFactory;
|
||||
import com.vividsolutions.jts.geom.Coordinate;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||
@ -60,7 +76,9 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE;
|
||||
import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER;
|
||||
@ -69,14 +87,12 @@ public class TestActivity extends BaseActivity {
|
||||
|
||||
private TencentMap tencentMap;
|
||||
private List<Removable> removables;
|
||||
private List<LatLng> markerLatlng;
|
||||
private final int MARKER_DOT = 3;
|
||||
private final int MARKER_LINE = 2;
|
||||
private final int MARKER_FACE = 1;
|
||||
private ClusterManager<MarkerClusterItem> clusterItemClusterManager;
|
||||
private Circle circle;
|
||||
private List<MarkerClusterItem> items;
|
||||
|
||||
private HashMap<String, List<Marker>> stringListHashMap;
|
||||
private ArrayList<LatLng> listLatlng;
|
||||
|
||||
@Override
|
||||
protected int getLayout() {
|
||||
@ -87,9 +103,10 @@ public class TestActivity extends BaseActivity {
|
||||
protected void initData() {
|
||||
super.initData();
|
||||
removables = new ArrayList<>();//存储网络数据的marker数据(线,面,点)
|
||||
markerLatlng = new ArrayList<>();//存储网络数据的marker数据(线,面,点)
|
||||
stringListHashMap = new HashMap<>();//key :wkt,value :存储的数据类型
|
||||
//存储的多点latlng
|
||||
listLatlng = new ArrayList<>();
|
||||
initList(Constant.currentLocation);
|
||||
|
||||
}
|
||||
|
||||
private void initList(TencentLocation tencentLocation) {
|
||||
@ -105,6 +122,7 @@ public class TestActivity extends BaseActivity {
|
||||
}
|
||||
//获取中心点位置
|
||||
LatLng mapCenterPoint = tencentMap.getCameraPosition().target;
|
||||
|
||||
String centerEncode = null;
|
||||
if (mapCenterPoint != null) {
|
||||
centerEncode = Geohash.getInstance().encode(mapCenterPoint.latitude, mapCenterPoint.longitude);
|
||||
@ -134,17 +152,19 @@ public class TestActivity extends BaseActivity {
|
||||
if (response.getCode() == 200) {
|
||||
JobSearchBean.BodyBean body = response.getBody();
|
||||
if (body != null) {
|
||||
Log.d("TAG", "onSuccess: " + response.getBody().toString() + "sassafras's");
|
||||
Log.d("TAG", "onSuccess: " + response.getBody().toString());
|
||||
for (int i = 0; i < removables.size(); i++) {
|
||||
removables.get(i).remove();
|
||||
}
|
||||
removables.clear();
|
||||
stringListHashMap.clear();
|
||||
List<JobSearchBean.BodyBean.ListBean> list = response.getBody().getList();
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
JobSearchBean.BodyBean.ListBean listBean = list.get(i);
|
||||
String encodeStr = list.get(i).getGeo();
|
||||
// 解密geo
|
||||
String geo = Geohash.getInstance().decode(encodeStr);
|
||||
Geometry geoMe = GeometryTools.createGeometry(Geohash.getInstance().decode(encodeStr));
|
||||
String geo = geoMe.toString();
|
||||
listBean.setGeo(geo);
|
||||
Log.d("TAG", "onSuccess: " + geo);
|
||||
Geometry geometry = GeometryTools.createGeometry(geo);
|
||||
@ -163,20 +183,15 @@ public class TestActivity extends BaseActivity {
|
||||
List<LatLng> latLineString = GeometryTools.getLatLngs(geo);
|
||||
// 构造 PolylineOptions
|
||||
PolylineOptions polylineOptions = new PolylineOptions()
|
||||
.addAll(latLineString)
|
||||
// 折线设置圆形线头
|
||||
.lineCap(true)
|
||||
// 折线的颜色为绿色
|
||||
.color(Color.parseColor("#0096FF"))
|
||||
// 折线宽度为5像素
|
||||
.addAll(latLineString)// 折线设置圆形线头
|
||||
.lineCap(true)// 折线的颜色为绿色
|
||||
.color(Color.parseColor("#0096FF"))// 折线宽度为5像素
|
||||
.width(10)
|
||||
.arrow(true)
|
||||
//.borderColor(0xffff0000) // 还可以添加描边颜色
|
||||
//.borderWidth(1) // 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
.arrowSpacing(100)
|
||||
.arrowTexture(bitmapLine);
|
||||
// 还可以添加描边颜色
|
||||
//.borderColor(0xffff0000)
|
||||
// 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
//.borderWidth(1);
|
||||
// 绘制折线
|
||||
Polyline polyline = tencentMap.addPolyline(polylineOptions);
|
||||
polyline.setZIndex(MARKER_LINE);
|
||||
@ -188,14 +203,10 @@ public class TestActivity extends BaseActivity {
|
||||
case "Polygon": //面
|
||||
List<LatLng> latPolygon = GeometryTools.getLatLngs(geo);
|
||||
Polygon polygon = tencentMap.addPolygon(new PolygonOptions().
|
||||
//连接封闭图形的点
|
||||
addAll(latPolygon).
|
||||
//填充颜色为红色
|
||||
fillColor(Color.parseColor("#97E0E7EC")).
|
||||
//边线颜色为黑色
|
||||
strokeColor(0xff000000).
|
||||
//边线宽度15像素
|
||||
strokeWidth(5));
|
||||
addAll(latPolygon).//连接封闭图形的点
|
||||
fillColor(Color.parseColor("#97E0E7EC")). //填充颜色为红色
|
||||
strokeColor(0xff000000).//边线颜色为黑色
|
||||
strokeWidth(5));//边线宽度15像素
|
||||
polygon.setZIndex(MARKER_FACE);
|
||||
removables.add(polygon);
|
||||
com.vividsolutions.jts.geom.Point centroid = geometry.getCentroid();
|
||||
@ -209,7 +220,6 @@ public class TestActivity extends BaseActivity {
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
markerLatlng.add(latLng);
|
||||
switch (list.get(i).getType()) {
|
||||
case 1://poi
|
||||
BitmapDescriptor poiDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_bg1);
|
||||
@ -223,6 +233,7 @@ public class TestActivity extends BaseActivity {
|
||||
poiMarker.setTag(listBean);
|
||||
removables.add(poiMarker);
|
||||
poiMarker.setClickable(true);
|
||||
onMarker(geo, poiMarker);
|
||||
break;
|
||||
case 2://充电站
|
||||
BitmapDescriptor chargeDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_bg1);
|
||||
@ -235,6 +246,7 @@ public class TestActivity extends BaseActivity {
|
||||
stationMarker.setTag(listBean);
|
||||
removables.add(stationMarker);
|
||||
stationMarker.setClickable(true);
|
||||
onMarker(geo, stationMarker);
|
||||
break;
|
||||
case 3://poi录像
|
||||
BitmapDescriptor poiVideoDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_video_bg1);
|
||||
@ -247,6 +259,7 @@ public class TestActivity extends BaseActivity {
|
||||
poiVideoMarker.setZIndex(MARKER_DOT);
|
||||
removables.add(poiVideoMarker);
|
||||
poiVideoMarker.setClickable(true);
|
||||
onMarker(geo, poiVideoMarker);
|
||||
break;
|
||||
case 4://道路录像
|
||||
BitmapDescriptor roadDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_road_bg);
|
||||
@ -259,6 +272,7 @@ public class TestActivity extends BaseActivity {
|
||||
roadMarker.setTag(listBean);
|
||||
removables.add(roadMarker);
|
||||
roadMarker.setClickable(true);
|
||||
onMarker(geo, roadMarker);
|
||||
break;
|
||||
case 5://其他
|
||||
BitmapDescriptor otherDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_other_bg1);
|
||||
@ -271,6 +285,7 @@ public class TestActivity extends BaseActivity {
|
||||
otherMarker.setTag(listBean);
|
||||
removables.add(otherMarker);
|
||||
otherMarker.setClickable(true);
|
||||
onMarker(geo, otherMarker);
|
||||
break;
|
||||
case 6://面状任务
|
||||
BitmapDescriptor Descriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_facet_bg1);
|
||||
@ -283,11 +298,22 @@ public class TestActivity extends BaseActivity {
|
||||
planarMarker.setTag(listBean);
|
||||
removables.add(planarMarker);
|
||||
planarMarker.setClickable(true);
|
||||
onMarker(geo, planarMarker);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
initNewMarker();
|
||||
listLatlng.clear();
|
||||
for (Map.Entry<String, List<Marker>> entry : stringListHashMap.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
List<Marker> markerList = stringListHashMap.get(key);
|
||||
assert markerList != null;
|
||||
Log.d("TAG", "onSuenccess: "+markerList.toString());
|
||||
Log.d("TAG", "onSuenccess: "+entry.getValue()+"sssssssssssssssssssssssssssssss"+entry.getKey());
|
||||
LatLng lng = GeometryTools.createLatLng(key);
|
||||
listLatlng.add(lng);
|
||||
}
|
||||
Message obtain = Message.obtain();
|
||||
obtain.what = Constant.JOB_SEARCH_WORD;
|
||||
obtain.obj = response;
|
||||
@ -296,6 +322,7 @@ public class TestActivity extends BaseActivity {
|
||||
Toast.makeText(TestActivity.this, response.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e, int id) {
|
||||
dismissLoadingDialog();
|
||||
@ -304,6 +331,19 @@ public class TestActivity extends BaseActivity {
|
||||
});
|
||||
}
|
||||
|
||||
public void onMarker(String geo, Marker marker) {
|
||||
if (!stringListHashMap.containsKey(geo)) {
|
||||
List<Marker> markers = new ArrayList<>();
|
||||
markers.add(marker);
|
||||
stringListHashMap.put(geo, markers);
|
||||
} else {
|
||||
List<Marker> markers = stringListHashMap.get(geo);
|
||||
assert markers != null;
|
||||
markers.add(marker);
|
||||
stringListHashMap.put(geo, markers);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
super.initView();
|
||||
@ -317,40 +357,162 @@ public class TestActivity extends BaseActivity {
|
||||
uiSettings.setTiltGesturesEnabled(false);//禁止倾斜手势.
|
||||
//uiSettings.setAllGesturesEnabled(false);
|
||||
setLocMarkerStyle(LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);
|
||||
// initCluster();
|
||||
// initCluster();
|
||||
initNewMarker();
|
||||
|
||||
}
|
||||
|
||||
private void initNewMarker() {
|
||||
//添加圆
|
||||
LatLng mapCenterPoint = tencentMap.getCameraPosition().target;
|
||||
circle = tencentMap.addCircle(new CircleOptions().
|
||||
center(mapCenterPoint).// 圆心
|
||||
radius(1000d).// 半径
|
||||
fillColor(0xff0000ff).// 圆的填充色为蓝色
|
||||
strokeColor(0xff000000).// 描边的颜色为黑色
|
||||
strokeWidth(1).// 描边宽度
|
||||
clickable(true).// 可点击性
|
||||
visible(true).// 可见性
|
||||
zIndex(2));// 层级
|
||||
circle.setFillColor(0xFF00ff00);// 设置圆的填充色为红色
|
||||
// 移除圆
|
||||
// circle.remove();
|
||||
//中心点的圆
|
||||
Geometry geometry = GeometryTools.createGeometry(mapCenterPoint);
|
||||
// 多 点
|
||||
MultiPoint multiPoint = GeometryTools.createMultiPoint(markerLatlng);
|
||||
// 点与多点直接形成的交叉点
|
||||
if (multiPoint!=null){
|
||||
Geometry intersection = geometry.intersection(multiPoint);
|
||||
if (intersection.getGeometryType().equals("Point")){}
|
||||
Log.d("ddddd", "initNewMarker: " + intersection);
|
||||
}
|
||||
tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener() {
|
||||
@Override
|
||||
public void onMapClick(LatLng latLng) {
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
tencentMap.setOnMarkerClickListener(new TencentMap.OnMarkerClickListener() {
|
||||
@Override
|
||||
public boolean onMarkerClick(Marker marker) {
|
||||
LatLng latLng = marker.getPosition();
|
||||
ArrayList<LatLng> latLngs = new ArrayList<>();//存储的是内部的屏幕点坐标
|
||||
Projection projection = tencentMap.getProjection();
|
||||
android.graphics.Point point = projection.toScreenLocation(latLng);//转换为屏幕坐标
|
||||
int minX = point.x - 200;
|
||||
int minY = point.y - 200;
|
||||
int maxX = point.x + 200;
|
||||
int maxY = point.y + 200;
|
||||
point.set(minX, minY);
|
||||
latLngs.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(maxX, minY);
|
||||
latLngs.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(maxX, maxY);
|
||||
latLngs.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(minX, maxY);
|
||||
latLngs.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(minX, minY);
|
||||
latLngs.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
com.vividsolutions.jts.geom.Polygon polygon = GeometryTools.createPolygon(latLngs);
|
||||
//多点
|
||||
MultiPoint multiPoint = GeometryTools.createMultiPoint(listLatlng);
|
||||
//拿到覆蓋點
|
||||
Geometry intersection = polygon.intersection(multiPoint);
|
||||
String geometryType = intersection.getGeometryType();
|
||||
ArrayList<PoiEntity> poiEntityArrayList = new ArrayList<>();
|
||||
if (geometryType.equals("MultiPoint")) {
|
||||
List<LatLng> latList = GeometryTools.getLatList(intersection);
|
||||
for (int i = 0; i < latList.size(); i++) {
|
||||
LatLng latL = latList.get(i);
|
||||
Geometry geometry = GeometryTools.createGeometry(latL);
|
||||
Log.d("TAG", "onMarkerClick: "+geometry.toString());
|
||||
List<Marker> markerList = stringListHashMap.get(geometry.toText());
|
||||
if (markerList!=null){
|
||||
for (Marker mar : markerList) {
|
||||
JobSearchBean.BodyBean.ListBean listBean = (JobSearchBean.BodyBean.ListBean) mar.getTag();
|
||||
if (listBean != null) {
|
||||
PoiEntity poiListEntity = new PoiEntity();
|
||||
poiListEntity.setTaskId(listBean.getId());
|
||||
poiListEntity.setGeoWkt(listBean.getGeo());
|
||||
poiListEntity.setName(listBean.getName());
|
||||
poiListEntity.setAddress(listBean.getAddress());
|
||||
poiListEntity.setTelPhone(listBean.getTelephone() + "");
|
||||
poiListEntity.setPrecision(listBean.getPrice() + "");
|
||||
poiListEntity.setDist(listBean.getDist() + "");
|
||||
poiListEntity.setDescribe(listBean.getMemo());
|
||||
poiListEntity.setCreateTime(listBean.getEndDate());
|
||||
poiListEntity.setType(listBean.getType());
|
||||
String beanGeo = listBean.getGeo();
|
||||
poiListEntity.setGeoWkt(beanGeo);
|
||||
Geometry geos = GeometryTools.createGeometry(beanGeo);
|
||||
switch (geos.getGeometryType()) {
|
||||
case "Point": //点
|
||||
LatLng lng = GeometryTools.createLatLng(beanGeo);
|
||||
poiListEntity.setX(lng.longitude + "");
|
||||
poiListEntity.setY(lng.latitude + "");
|
||||
break;
|
||||
case "LineString": //线
|
||||
case "Polygon": //面
|
||||
List<LatLng> latLineString = GeometryTools.getLatLngs(beanGeo);
|
||||
assert latLineString != null;
|
||||
poiListEntity.setX(latLineString.get(0).longitude + "");
|
||||
poiListEntity.setY(latLineString.get(0).latitude + "");
|
||||
break;
|
||||
}
|
||||
poiEntityArrayList.add(poiListEntity);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
customDialog(poiEntityArrayList);
|
||||
} else {
|
||||
Log.d("TAG", "onMapClick: " + geometryType);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
/* tencentMap.setOnMarkerClickListener(new TencentMap.OnMarkerClickListener() {
|
||||
@Override
|
||||
public boolean onMarkerClick(Marker marker) {
|
||||
if (marker.getTag().equals("marker")) {
|
||||
Toast.makeText(TestActivity.this, marker.getId()+"sssssssssssssssssssss", Toast.LENGTH_SHORT).show();
|
||||
//中心点的圆
|
||||
// Geometry geometry = GeometryTools.createGeometry();
|
||||
// 多 点
|
||||
MultiPoint multiPoint = GeometryTools.createMultiPoint(markerLatlng);
|
||||
// 点与多点直接形成的交叉点
|
||||
if (multiPoint != null) {
|
||||
Geometry intersection = geometry.intersection(multiPoint);
|
||||
intersection.getGeometryType()
|
||||
Coordinate[] coordinates = intersection.getCoordinates();
|
||||
if (coordinates != null && coordinates.length > 0) {
|
||||
LatLng geo = new LatLng(coordinates[0].y, coordinates[0].x);
|
||||
BitmapDescriptor chargeDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_bg1);
|
||||
tencentMap.addMarker(new MarkerOptions(geo).icon(chargeDescriptor).alpha(0.9f)
|
||||
.anchor(0.5f, 1.0f)
|
||||
.flat(true)
|
||||
.clockwise(false));
|
||||
Log.d("yyyy", "initNewMarker: " + geo);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});*/
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义登录对话框
|
||||
*/
|
||||
public void customDialog(List<PoiEntity> list) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(TestActivity.this);
|
||||
final AlertDialog dialog = builder.create();
|
||||
View dialogView = View.inflate(this, R.layout.layout_marker_dialog, null);
|
||||
dialog.setView(dialogView);
|
||||
Window win = dialog.getWindow();
|
||||
win.setGravity(Gravity.BOTTOM); // 这里控制弹出的位置
|
||||
win.getDecorView().setPadding(0, 0, 0, 0);
|
||||
WindowManager.LayoutParams lp = win.getAttributes();
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
||||
dialog.getWindow().setBackgroundDrawable(null);
|
||||
win.setAttributes(lp);
|
||||
dialog.show();
|
||||
RecyclerView recyclerView = dialogView.findViewById(R.id.rv_marker_view);
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||
MarkerAdapter markerAdapter = new MarkerAdapter(list, TestActivity.this);
|
||||
recyclerView.setAdapter(markerAdapter);
|
||||
markerAdapter.setOnBankClick(new MarkerAdapter.OnBankClick() {
|
||||
@Override
|
||||
public void onClick(PoiEntity poiEntity) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initCluster() {
|
||||
// 实例化点聚合管理者
|
||||
clusterItemClusterManager = new ClusterManager<>(this, tencentMap);
|
||||
|
||||
//默认聚合策略,调用是不必添加,如果需要其他聚合策略可以按以下代码修改
|
||||
NonHierarchicalDistanceBasedAlgorithm<MarkerClusterItem> hierarchicalDistanceBasedAlgorithm = new NonHierarchicalDistanceBasedAlgorithm<>(this);
|
||||
//设置点聚合生效距离,以dp为代码
|
||||
@ -361,13 +523,11 @@ public class TestActivity extends BaseActivity {
|
||||
DefaultClusterRenderer<MarkerClusterItem> markerClusterItemDefaultClusterRenderer = new DefaultClusterRenderer<>(this, tencentMap, clusterItemClusterManager);
|
||||
//设置最小聚合数量,默认为4.这里设置为2,即有两个以上不包括2个marker 才会聚合
|
||||
markerClusterItemDefaultClusterRenderer.setMinClusterSize(2);
|
||||
|
||||
//定义聚合的分段,当超过五个不足10个的时候,显示5+ ,其他分段同理
|
||||
markerClusterItemDefaultClusterRenderer.setBuckets(new int[]{5, 10, 15, 20, 25, 50, 100, 200});
|
||||
clusterItemClusterManager.setRenderer(markerClusterItemDefaultClusterRenderer);
|
||||
//添加聚合
|
||||
|
||||
items = new ArrayList<>();
|
||||
List<MarkerClusterItem> items = new ArrayList<>();
|
||||
items.add(new MarkerClusterItem(39.984059, 116.307621));
|
||||
items.add(new MarkerClusterItem(39.981954, 116.304703));
|
||||
items.add(new MarkerClusterItem(39.984355, 116.312256));
|
||||
@ -394,13 +554,11 @@ public class TestActivity extends BaseActivity {
|
||||
items.add(new MarkerClusterItem(22.538086, 113.999805));
|
||||
items.add(new MarkerClusterItem(22.534756, 114.082031));
|
||||
clusterItemClusterManager.addItems(items);
|
||||
|
||||
tencentMap.setOnCameraChangeListener(clusterItemClusterManager);
|
||||
tencentMap.setOnCameraChangeListener(new TencentMap.OnCameraChangeListener() {
|
||||
@Override
|
||||
public void onCameraChange(CameraPosition cameraPosition) {
|
||||
clusterItemClusterManager.cluster();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -442,7 +600,6 @@ public class TestActivity extends BaseActivity {
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMessageMainThread(Message msg) {
|
||||
if (msg.what == Constant.EVENT_WHAT_LOCATION_CHANGE) { // 用户位置更新
|
||||
@ -458,4 +615,5 @@ public class TestActivity extends BaseActivity {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
118
app/src/main/java/com/navinfo/outdoor/adapter/MarkerAdapter.java
Normal file
118
app/src/main/java/com/navinfo/outdoor/adapter/MarkerAdapter.java
Normal file
@ -0,0 +1,118 @@
|
||||
package com.navinfo.outdoor.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.bean.BankPathBean;
|
||||
import com.navinfo.outdoor.room.PoiEntity;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MarkerAdapter extends RecyclerView.Adapter<MarkerAdapter.ViewHolder> {
|
||||
private List<PoiEntity> poiEntities ;
|
||||
private Context context;
|
||||
|
||||
public MarkerAdapter(List<PoiEntity> poiEntities, Context context) {
|
||||
this.poiEntities = poiEntities;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
|
||||
View inflate = LayoutInflater.from(context).inflate(R.layout.item_marker, parent, false);
|
||||
return new ViewHolder(inflate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull @NotNull ViewHolder holder, int position) {
|
||||
PoiEntity poiEntity = poiEntities.get(position);
|
||||
if (poiEntity.getTaskStatus()==0||poiEntity.getTaskStatus()==1){
|
||||
switch (poiEntity.getType()){
|
||||
case 1:
|
||||
Glide.with(context).load(R.drawable.marker_poi_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
case 2:
|
||||
Glide.with(context).load(R.drawable.marker_charge_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
case 3:
|
||||
Glide.with(context).load(R.drawable.marker_poi_video_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
case 4:
|
||||
Glide.with(context).load(R.drawable.marker_road_bg).into(holder.ivIcon);
|
||||
break;
|
||||
case 5:
|
||||
Glide.with(context).load(R.drawable.marker_other_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
case 6:
|
||||
Glide.with(context).load(R.drawable.marker_facet_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
}
|
||||
}else if (poiEntity.getTaskStatus()==2||poiEntity.getTaskStatus()==3||poiEntity.getTaskStatus()==4){
|
||||
switch (poiEntity.getType()){
|
||||
case 1:
|
||||
Glide.with(context).load(R.drawable.graypoi).into(holder.ivIcon);
|
||||
break;
|
||||
case 2:
|
||||
Glide.with(context).load(R.drawable.graycharge).into(holder.ivIcon);
|
||||
break;
|
||||
case 3:
|
||||
Glide.with(context).load(R.drawable.poi_video_have_bg1).into(holder.ivIcon);
|
||||
break;
|
||||
case 4:
|
||||
Glide.with(context).load(R.drawable.grayroad).into(holder.ivIcon);
|
||||
break;
|
||||
case 5:
|
||||
Glide.with(context).load(R.drawable.grayother).into(holder.ivIcon);
|
||||
break;
|
||||
case 6:
|
||||
Glide.with(context).load(R.drawable.grayfacet).into(holder.ivIcon);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
holder.titer.setText(poiEntity.getName());
|
||||
holder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
onBankClick.onClick(poiEntities.get(position));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return poiEntities.size();
|
||||
}
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView titer;
|
||||
ImageView ivIcon;
|
||||
|
||||
public ViewHolder(@NonNull @NotNull View itemView) {
|
||||
super(itemView);
|
||||
titer = itemView.findViewById(R.id.tv_title);
|
||||
ivIcon=itemView.findViewById(R.id.iv_icon);
|
||||
}
|
||||
}
|
||||
public interface OnBankClick {
|
||||
void onClick(PoiEntity poiEntity);
|
||||
}
|
||||
|
||||
private OnBankClick onBankClick;
|
||||
|
||||
public void setOnBankClick(OnBankClick onBankClick) {
|
||||
this.onBankClick = onBankClick;
|
||||
}
|
||||
}
|
@ -347,18 +347,22 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe
|
||||
String geo = Geohash.getInstance().decode(encodeStr);
|
||||
chargingStationEntity.setGeoWkt(geo);
|
||||
Geometry geometry = GeometryTools.createGeometry(geo);
|
||||
if (geometry.getGeometryType().equals("Point")) {//点
|
||||
LatLng latLng = GeometryTools.createLatLng(geo);
|
||||
chargingStationEntity.setX(latLng.longitude + "");
|
||||
chargingStationEntity.setY(latLng.latitude + "");
|
||||
} else if (geometry.getGeometryType().equals("LineString")) {//线
|
||||
List<LatLng> latLineString = GeometryTools.getLatLngs(geo);
|
||||
chargingStationEntity.setX(latLineString.get(0).longitude + "");
|
||||
chargingStationEntity.setY(latLineString.get(0).latitude + "");
|
||||
} else if (geometry.getGeometryType().equals("Polygon")) {//面
|
||||
List<LatLng> latPolygon = GeometryTools.getLatLngs(geo);
|
||||
chargingStationEntity.setX(latPolygon.get(0).longitude + "");
|
||||
chargingStationEntity.setY(latPolygon.get(0).latitude + "");
|
||||
switch (geometry.getGeometryType()) {
|
||||
case "Point": //点
|
||||
LatLng latLng = GeometryTools.createLatLng(geo);
|
||||
chargingStationEntity.setX(latLng.longitude + "");
|
||||
chargingStationEntity.setY(latLng.latitude + "");
|
||||
break;
|
||||
case "LineString": //线
|
||||
List<LatLng> latLineString = GeometryTools.getLatLngs(geo);
|
||||
chargingStationEntity.setX(latLineString.get(0).longitude + "");
|
||||
chargingStationEntity.setY(latLineString.get(0).latitude + "");
|
||||
break;
|
||||
case "Polygon": //面
|
||||
List<LatLng> latPolygon = GeometryTools.getLatLngs(geo);
|
||||
chargingStationEntity.setX(latPolygon.get(0).longitude + "");
|
||||
chargingStationEntity.setY(latPolygon.get(0).latitude + "");
|
||||
break;
|
||||
}
|
||||
|
||||
//充电桩
|
||||
|
@ -13,7 +13,10 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.FrameLayout;
|
||||
@ -22,9 +25,13 @@ import android.widget.LinearLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.widget.NestedScrollView;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
import androidx.recyclerview.widget.DividerItemDecoration;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.github.lazylibrary.util.DensityUtil;
|
||||
import com.google.gson.Gson;
|
||||
@ -41,6 +48,8 @@ import com.lzy.okgo.OkGo;
|
||||
import com.lzy.okgo.model.HttpParams;
|
||||
import com.navinfo.outdoor.R;
|
||||
import com.navinfo.outdoor.activity.FragmentManagement;
|
||||
import com.navinfo.outdoor.activity.TestActivity;
|
||||
import com.navinfo.outdoor.adapter.MarkerAdapter;
|
||||
import com.navinfo.outdoor.api.Constant;
|
||||
import com.navinfo.outdoor.base.BaseDrawerFragment;
|
||||
import com.navinfo.outdoor.base.BaseFragment;
|
||||
@ -67,6 +76,7 @@ import com.tencent.map.geolocation.TencentLocation;
|
||||
import com.tencent.tencentmap.mapsdk.maps.CameraUpdate;
|
||||
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
|
||||
import com.tencent.tencentmap.mapsdk.maps.MapView;
|
||||
import com.tencent.tencentmap.mapsdk.maps.Projection;
|
||||
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
|
||||
import com.tencent.tencentmap.mapsdk.maps.UiSettings;
|
||||
import com.tencent.tencentmap.mapsdk.maps.interfaces.Removable;
|
||||
@ -82,6 +92,7 @@ import com.tencent.tencentmap.mapsdk.maps.model.PolygonOptions;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.Polyline;
|
||||
import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
import com.vividsolutions.jts.geom.MultiPoint;
|
||||
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
@ -90,6 +101,7 @@ import org.greenrobot.eventbus.Subscribe;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@ -107,9 +119,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
private ImageView ivSubmit;
|
||||
private ImageView ivRaffish;
|
||||
private SlidingUpPanelLayout sliding_layout;
|
||||
// private FragmentTransaction fragmentTransaction;
|
||||
private ImageView ivFilter;
|
||||
private Point screenPosition; //marker的屏幕坐标
|
||||
private FrameLayout frameLayout;
|
||||
private GatherGetFragment gatherGetFragment;
|
||||
public ImageView ivMessage;
|
||||
@ -138,7 +148,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
private final int MARKER_LINE = 2;
|
||||
private final int MARKER_FACE = 1;
|
||||
private final int MARKER_BIG = 4;
|
||||
private boolean isBack=false;
|
||||
private boolean isBack = false;
|
||||
private HashMap<String, List<Marker>> removableHashMap;
|
||||
private ArrayList<LatLng> latList;
|
||||
private ArrayList<PoiEntity> poiEntityArrayList;
|
||||
|
||||
|
||||
public static TreasureFragment newInstance(Bundle bundle) {
|
||||
@ -160,6 +173,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
msg.what = Constant.FILTER_DATA_CLEAR;
|
||||
EventBus.getDefault().post(msg);
|
||||
dismissLoadingDialog();
|
||||
removableHashMap.clear();
|
||||
initThread(); // 刷新筛选的本地数据
|
||||
initList(Constant.currentLocation); // 刷新筛选的网络数据
|
||||
}
|
||||
@ -230,6 +244,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
removables = new ArrayList<>();//存储网络数据的marker数据(线,面,点)
|
||||
removablesLocality = new ArrayList<>(); //存储本地的marker数据(线,面,点)
|
||||
removableScreenMarker = new ArrayList<>();//存储点击屏幕上的marker的marker数据(线,面,点)
|
||||
//key :wkt,value :存储的数据类型
|
||||
removableHashMap = new HashMap<>();
|
||||
//存储的多点latlng
|
||||
latList = new ArrayList<>();
|
||||
tencentMap.addOnMapLoadedCallback(new TencentMap.OnMapLoadedCallback() {
|
||||
@Override
|
||||
public void onMapLoaded() {
|
||||
@ -259,7 +277,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
} else {
|
||||
dismissLoadingDialog();
|
||||
}
|
||||
Constant.markerClickListener=markerClickListener;
|
||||
Constant.markerClickListener = markerClickListener;
|
||||
tencentMap.setOnMarkerClickListener(Constant.markerClickListener);
|
||||
}
|
||||
});
|
||||
@ -382,7 +400,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
}
|
||||
String userEncode = Geohash.getInstance().encode(tencentLocation.getLatitude(), tencentLocation.getLongitude());
|
||||
OkGo.getInstance().cancelTag(this);
|
||||
Log.d("TAG", "initList: "+Constant.USHERED);
|
||||
Log.d("TAG", "initList: " + Constant.USHERED);
|
||||
showLoadingDialog();
|
||||
// 请求方式和请求url
|
||||
HttpParams httpParams = new HttpParams();
|
||||
@ -405,9 +423,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
dismissLoadingDialog();
|
||||
if (response.getCode() == 200) {
|
||||
JobSearchBean.BodyBean body = response.getBody();
|
||||
upload = response.getBody().getUpload();
|
||||
|
||||
if (body != null) {
|
||||
upload = response.getBody().getUpload();
|
||||
if (upload != null) {
|
||||
ivSubmit.setEnabled(true);
|
||||
} else {
|
||||
@ -449,13 +466,13 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
.color(Color.parseColor("#0096FF"))
|
||||
// 折线宽度为5像素
|
||||
.width(10)
|
||||
// 还可以添加描边颜色
|
||||
//.borderColor(0xffff0000)
|
||||
// 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
//.borderWidth(1);
|
||||
.arrow(true)
|
||||
.arrowSpacing(100)
|
||||
.arrowTexture(bitmapLine);
|
||||
// 还可以添加描边颜色
|
||||
//.borderColor(0xffff0000)
|
||||
// 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
//.borderWidth(1);
|
||||
// 绘制折线
|
||||
Polyline polyline = tencentMap.addPolyline(polylineOptions);
|
||||
polyline.setZIndex(MARKER_LINE);
|
||||
@ -483,9 +500,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
latLng = new LatLng();
|
||||
latLng.setLatitude(y);
|
||||
latLng.setLongitude(x);
|
||||
/* if (latPolygon != null && latPolygon.size() > 0) {
|
||||
latLng = latPolygon.get(0);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
switch (list.get(i).getType()) {
|
||||
@ -500,6 +514,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
poiMarker.setZIndex(MARKER_DOT);
|
||||
poiMarker.setTag(listBean);
|
||||
removables.add(poiMarker);
|
||||
String poiGeo = initGeo(latLng);
|
||||
geoMarker(poiGeo, poiMarker);
|
||||
poiMarker.setClickable(true);
|
||||
break;
|
||||
case 2://充电站
|
||||
@ -512,6 +528,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
stationMarker.setZIndex(MARKER_DOT);
|
||||
stationMarker.setTag(listBean);
|
||||
removables.add(stationMarker);
|
||||
String stationGeo = initGeo(latLng);
|
||||
geoMarker(stationGeo, stationMarker);
|
||||
stationMarker.setClickable(true);
|
||||
|
||||
break;
|
||||
@ -525,6 +543,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
poiVideoMarker.setTag(listBean);
|
||||
poiVideoMarker.setZIndex(MARKER_DOT);
|
||||
removables.add(poiVideoMarker);
|
||||
String poiVideoGeo = initGeo(latLng);
|
||||
geoMarker(poiVideoGeo, poiVideoMarker);
|
||||
poiVideoMarker.setClickable(true);
|
||||
break;
|
||||
case 4://道路录像
|
||||
@ -537,8 +557,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
roadMarker.setZIndex(MARKER_DOT);
|
||||
roadMarker.setTag(listBean);
|
||||
removables.add(roadMarker);
|
||||
String roadGeo = initGeo(latLng);
|
||||
geoMarker(roadGeo, roadMarker);
|
||||
roadMarker.setClickable(true);
|
||||
|
||||
break;
|
||||
case 5://其他
|
||||
BitmapDescriptor otherDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_other_bg1);
|
||||
@ -550,6 +571,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
otherMarker.setZIndex(MARKER_DOT);
|
||||
otherMarker.setTag(listBean);
|
||||
removables.add(otherMarker);
|
||||
String otherGeo = initGeo(latLng);
|
||||
geoMarker(otherGeo, otherMarker);
|
||||
otherMarker.setClickable(true);
|
||||
break;
|
||||
case 6://面状任务
|
||||
@ -562,11 +585,20 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
planarMarker.setZIndex(MARKER_DOT);
|
||||
planarMarker.setTag(listBean);
|
||||
removables.add(planarMarker);
|
||||
String planarGeo = initGeo(latLng);
|
||||
geoMarker(planarGeo, planarMarker);
|
||||
planarMarker.setClickable(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
latList.clear();
|
||||
for (Map.Entry<String, List<Marker>> entry : removableHashMap.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
LatLng lng = GeometryTools.createLatLng(key);
|
||||
latList.add(lng);
|
||||
}
|
||||
|
||||
Message obtain = Message.obtain();
|
||||
obtain.what = Constant.JOB_SEARCH_WORD;
|
||||
obtain.obj = response;
|
||||
@ -585,6 +617,23 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
});
|
||||
}
|
||||
|
||||
public String initGeo(LatLng latLng) {
|
||||
return GeometryTools.createGeometry(latLng).toString();
|
||||
}
|
||||
|
||||
public void geoMarker(String geo, Marker marker) {
|
||||
if (!removableHashMap.containsKey(geo)) {
|
||||
List<Marker> markers = new ArrayList<>();
|
||||
markers.add(marker);
|
||||
removableHashMap.put(geo, markers);
|
||||
} else {
|
||||
List<Marker> markers = removableHashMap.get(geo);
|
||||
assert markers != null;
|
||||
markers.add(marker);
|
||||
removableHashMap.put(geo, markers);
|
||||
}
|
||||
}
|
||||
|
||||
public void initMarker(PoiEntity poiEntity, boolean aBoolean) {
|
||||
String geo = poiEntity.getGeoWkt();
|
||||
Log.d("TAG", "onSuccess: " + geo);
|
||||
@ -592,12 +641,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
if (geometry == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < removableScreenMarker.size(); i++) {
|
||||
removableScreenMarker.get(i).remove();
|
||||
}
|
||||
removableScreenMarker.clear();
|
||||
|
||||
LatLng latLng = null;
|
||||
switch (geometry.getGeometryType()) {
|
||||
case "Point": //点
|
||||
@ -623,10 +670,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
.arrow(true)
|
||||
.arrowSpacing(150)
|
||||
.arrowTexture(bitmapLine);
|
||||
/* // 还可以添加描边颜色
|
||||
.borderColor(0xffff0000)
|
||||
// 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
.borderWidth(1);*/
|
||||
// 绘制折线
|
||||
Polyline polyline = tencentMap.addPolyline(polylineOptions);
|
||||
polyline.setZIndex(MARKER_LINE);
|
||||
@ -655,9 +698,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
latLng = new LatLng();
|
||||
latLng.setLatitude(y);
|
||||
latLng.setLongitude(x);
|
||||
/* if (latPolygon != null && latPolygon.size() > 0) {
|
||||
latLng = latPolygon.get(0);
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
BitmapDescriptor descriptor = null;
|
||||
@ -701,7 +741,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
fragmentTransaction.replace(R.id.frame_layout, gatherGetFragment);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initThread() {
|
||||
@ -714,7 +753,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
List<PoiEntity> allTaskStatus = poiDao.getAllTaskStatus(taskStatus, taskStatus, type, type, limit, limit);
|
||||
//List<PoiEntity> allTaskStatus = poiDao.getAllPoi();
|
||||
List<PoiEntity> allPoiStatus = poiDao.getAllPoiStatus();
|
||||
if (allPoiStatus!=null){
|
||||
if (allPoiStatus != null) {
|
||||
poiDao.deleteAll(allPoiStatus);
|
||||
}
|
||||
Objects.requireNonNull(getActivity()).runOnUiThread(new Runnable() {
|
||||
@ -755,10 +794,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
.arrow(true)
|
||||
.arrowSpacing(100)
|
||||
.arrowTexture(bitmapLine);
|
||||
/* // 还可以添加描边颜色
|
||||
.borderColor(0xffff0000)
|
||||
// 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth`
|
||||
.borderWidth(1);*/
|
||||
// 绘制折线
|
||||
Polyline polyline = tencentMap.addPolyline(polylineOptions);
|
||||
polyline.setZIndex(MARKER_LINE);
|
||||
@ -814,6 +849,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
poiMarker.setTitle(poiEntity.getName() + "");
|
||||
poiMarker.setTag(poiEntity);
|
||||
removablesLocality.add(poiMarker);
|
||||
String poiGeo = initGeo(latLng);
|
||||
geoMarker(poiGeo, poiMarker);
|
||||
break;
|
||||
case 2://充电站
|
||||
BitmapDescriptor chargeDescriptor = null;
|
||||
@ -832,6 +869,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
stationMarker.setTitle(poiEntity.getName() + "");
|
||||
stationMarker.setTag(poiEntity);
|
||||
removablesLocality.add(stationMarker);
|
||||
String stationGeo = initGeo(latLng);
|
||||
geoMarker(stationGeo, stationMarker);
|
||||
break;
|
||||
case 3://poi录像
|
||||
BitmapDescriptor poiVideoDescriptor = null;
|
||||
@ -850,6 +889,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
poiVideoMarker.setTitle(poiEntity.getName() + "");
|
||||
poiVideoMarker.setTag(poiEntity);
|
||||
removablesLocality.add(poiVideoMarker);
|
||||
String poiVideoGeo = initGeo(latLng);
|
||||
geoMarker(poiVideoGeo, poiVideoMarker);
|
||||
break;
|
||||
case 4://道路录像
|
||||
BitmapDescriptor roadDescriptor = null;
|
||||
@ -868,6 +909,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
roadMarker.setTitle(poiEntity.getName() + "");
|
||||
roadMarker.setTag(poiEntity);
|
||||
removablesLocality.add(roadMarker);
|
||||
String roadGeo = initGeo(latLng);
|
||||
geoMarker(roadGeo, roadMarker);
|
||||
break;
|
||||
case 5://其他
|
||||
BitmapDescriptor otherDescriptor = null;
|
||||
@ -886,6 +929,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
otherMarker.setTitle(poiEntity.getName() + "");
|
||||
otherMarker.setTag(poiEntity);
|
||||
removablesLocality.add(otherMarker);
|
||||
String otherGeo = initGeo(latLng);
|
||||
geoMarker(otherGeo, otherMarker);
|
||||
break;
|
||||
case 6://面状任务
|
||||
BitmapDescriptor Descriptor = null;
|
||||
@ -904,6 +949,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
planarMarker.setTitle(poiEntity.getName() + "");
|
||||
planarMarker.setTag(poiEntity);
|
||||
removablesLocality.add(planarMarker);
|
||||
String planarGeo = initGeo(latLng);
|
||||
geoMarker(planarGeo, planarMarker);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1025,8 +1072,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
PoiEntity poiEntity = (PoiEntity) data.obj;
|
||||
initMarker(poiEntity,true);
|
||||
} else if (data.what == Constant.GATHER_GET_MAP) { //地图界面点击采集 点击开始采集
|
||||
initMarker(poiEntity, true);
|
||||
} else if (data.what == Constant.GATHER_GET_MAP) { //地图界面点击采集 点击开始采集
|
||||
if (bigMarker != null) {
|
||||
bigMarker.setVisible(false);
|
||||
}
|
||||
@ -1062,31 +1109,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
fragmentTransaction.remove(gatherGetFragment);
|
||||
fragmentTransaction.commit();
|
||||
}
|
||||
}/* else if (data.what == Constant.TREASURE_WORD) { // POI采集-移动位置
|
||||
initPoiMarker((LatLng) data.obj);
|
||||
} else if (data.what == Constant.TREASURE_CHECKED_WORD) {//poi采集 -确定位置
|
||||
if ((boolean) data.obj) {
|
||||
initCheckedMarker(Constant.POI_WORD);
|
||||
}
|
||||
} else if (data.what == Constant.MAIN_CHARGING_STATION) {//充电站采集-移动位置
|
||||
initPoiMarker((LatLng) data.obj);
|
||||
} else if (data.what == Constant.MAIN_CHARGING_CHECKED_STATION) {//充电站采集 -确定位置
|
||||
if ((boolean) data.obj) {
|
||||
initCheckedMarker(Constant.CHARGING_STATION_WORD);
|
||||
}
|
||||
}*//* else if (data.what == Constant.MAIN_CHARGING_PILE) {//充电桩采集-移动位置
|
||||
initPileMarker((LatLng) data.obj);
|
||||
} else if (data.what == Constant.MAIN_CHARGING_CHECKED_PILE) {//充电桩采集-确定位置
|
||||
if ((boolean) data.obj) {
|
||||
initCheckedPileMarker(Constant.CHARGING_PILE_WORD);
|
||||
}
|
||||
}*//* else if (data.what == Constant.MAIN_OTHER) {//其他采集-移动位置
|
||||
initPoiMarker((LatLng) data.obj);
|
||||
} else if (data.what == Constant.MAIN_CHECKED_OTHER) {//其他采集-确定位置
|
||||
if ((boolean) data.obj) {
|
||||
initCheckedMarker(Constant.OTHER_WORD);
|
||||
}
|
||||
}*/ else if (data.what == Constant.TREASURE_FRAGMENT) {//抽屉界面的展示和隐藏
|
||||
} else if (data.what == Constant.TREASURE_FRAGMENT) {//抽屉界面的展示和隐藏
|
||||
if ((boolean) data.obj) {
|
||||
frameLayout.setVisibility(View.GONE);
|
||||
sliding_layout.setPanelHeight(0);
|
||||
@ -1156,7 +1179,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
removableScreenMarker.clear();
|
||||
refreshFilterData();
|
||||
}
|
||||
} else if (data.what == Constant.EVENT_WHAT_COMPLETE_TASK) {
|
||||
} else if (data.what == Constant.EVENT_WHAT_COMPLETE_TASK) {
|
||||
PoiEntity poiEntity = (PoiEntity) data.obj;
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putBoolean("isSliding", true); // 通知抽屉不收回
|
||||
@ -1372,7 +1395,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
ToastUtil.showShort(getContext(), "无法获取当前位置,请检查GPS是否打开!");
|
||||
return;
|
||||
}
|
||||
// LatLng mapCenterPoint = getMapCenterPoint();
|
||||
//LatLng mapCenterPoint = getMapCenterPoint();
|
||||
LatLng newPoiLatLng = new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude());
|
||||
poiEntity.setX(newPoiLatLng.getLongitude() + "");
|
||||
poiEntity.setY(newPoiLatLng.getLatitude() + "");
|
||||
@ -1519,9 +1542,60 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
TencentMap.OnMarkerClickListener markerClickListener = new TencentMap.OnMarkerClickListener() {
|
||||
@Override
|
||||
public boolean onMarkerClick(Marker marker) {
|
||||
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
|
||||
if (marker.getTitle() != null && !marker.getTitle().equals("")) {//是本地数据直接跳转到采集页面
|
||||
PoiEntity poiEntity = (PoiEntity) marker.getTag();
|
||||
LatLng latLng = marker.getPosition();
|
||||
ArrayList<LatLng> lngArrayList = new ArrayList<>();//存储的是内部的屏幕点坐标
|
||||
Projection projection = tencentMap.getProjection();
|
||||
android.graphics.Point point = projection.toScreenLocation(latLng);//转换为屏幕坐标
|
||||
int minX = point.x - 200;
|
||||
int minY = point.y - 200;
|
||||
int maxX = point.x + 200;
|
||||
int maxY = point.y + 200;
|
||||
point.set(minX, minY);
|
||||
lngArrayList.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(maxX, minY);
|
||||
lngArrayList.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(maxX, maxY);
|
||||
lngArrayList.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(minX, maxY);
|
||||
lngArrayList.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
point.set(minX, minY);
|
||||
lngArrayList.add(new LatLng(projection.fromScreenLocation(point)));
|
||||
poiEntityArrayList = new ArrayList<>();
|
||||
com.vividsolutions.jts.geom.Polygon polygon = GeometryTools.createPolygon(lngArrayList);
|
||||
//多点
|
||||
MultiPoint multiPoint = GeometryTools.createMultiPoint(latList);
|
||||
//拿到覆蓋點
|
||||
Geometry intersection = polygon.intersection(multiPoint);
|
||||
if (intersection == null) {
|
||||
initEntity(marker, true);
|
||||
} else {
|
||||
if (intersection.getGeometryType().equals("MultiPoint")) {
|
||||
List<LatLng> latList = GeometryTools.getLatList(intersection);
|
||||
for (int i = 0; i < latList.size(); i++) {
|
||||
LatLng latL = latList.get(i);
|
||||
Geometry geometry = GeometryTools.createGeometry(latL);
|
||||
Log.d("TAG", "onMarkerClick: " + geometry.toString());
|
||||
List<Marker> markerList = removableHashMap.get(geometry.toText());
|
||||
if (markerList != null) {
|
||||
for (Marker mar : markerList) {
|
||||
initEntity(mar, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
customDialog(poiEntityArrayList, marker);
|
||||
} else {
|
||||
initEntity(marker, true);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
private void initEntity(Marker marker, boolean isBack) {
|
||||
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
|
||||
if (marker.getTitle() != null && !marker.getTitle().equals("")) {//是本地数据直接跳转到采集页面
|
||||
PoiEntity poiEntity = (PoiEntity) marker.getTag();
|
||||
if (isBack) {
|
||||
frameLayout.setVisibility(View.GONE);
|
||||
if (gatherGetFragment != null) {
|
||||
fragmentTransaction.remove(gatherGetFragment);
|
||||
@ -1533,100 +1607,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
removableScreenMarker.get(i).remove();
|
||||
}
|
||||
removableScreenMarker.clear();
|
||||
if (poiEntity.getTaskStatus()==1){//已领取
|
||||
if (poiEntity.getTaskStatus() == 1) {//已领取
|
||||
initMarker(poiEntity, true);
|
||||
switch (poiEntity.getType()){
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
marker.remove();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("poiEntity", poiEntity);
|
||||
switch (poiEntity.getType()) {
|
||||
case 1:
|
||||
initMarker(poiEntity,false);
|
||||
PoiFragment poiFragment = PoiFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 2:
|
||||
|
||||
initMarker(poiEntity,false);
|
||||
ChargingStationFragment chargingStationFragment = ChargingStationFragment.newInstance(bundle);
|
||||
showSlidingFragment(chargingStationFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
|
||||
initMarker(poiEntity,false);
|
||||
PoiVideoFragment poiVideoFragment = PoiVideoFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiVideoFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 4:
|
||||
|
||||
initMarker(poiEntity,false);
|
||||
RoadFragment roadFragment = RoadFragment.newInstance(bundle);
|
||||
showSlidingFragment(roadFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 5:
|
||||
initMarker(poiEntity,false);
|
||||
OtherFragment otherFragment = OtherFragment.newInstance(bundle);
|
||||
showSlidingFragment(otherFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 6:
|
||||
initMarker(poiEntity, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
JobSearchBean.BodyBean.ListBean listBean = (JobSearchBean.BodyBean.ListBean) marker.getTag();
|
||||
if (listBean != null) {
|
||||
PoiEntity poiListEntity = new PoiEntity();
|
||||
poiListEntity.setTaskId(listBean.getId());
|
||||
poiListEntity.setGeoWkt(listBean.getGeo());
|
||||
poiListEntity.setName(listBean.getName());
|
||||
poiListEntity.setAddress(listBean.getAddress());
|
||||
poiListEntity.setTelPhone(listBean.getTelephone() + "");
|
||||
poiListEntity.setPrecision(listBean.getPrice() + "");
|
||||
poiListEntity.setDist(listBean.getDist() + "");
|
||||
poiListEntity.setDescribe(listBean.getMemo());
|
||||
poiListEntity.setCreateTime(listBean.getEndDate());
|
||||
poiListEntity.setType(listBean.getType());
|
||||
String geo = listBean.getGeo();
|
||||
poiListEntity.setGeoWkt(geo);
|
||||
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": //线
|
||||
List<LatLng> latLineString = GeometryTools.getLatLngs(geo);
|
||||
assert latLineString != null;
|
||||
poiListEntity.setX(latLineString.get(0).longitude + "");
|
||||
poiListEntity.setY(latLineString.get(0).latitude + "");
|
||||
break;
|
||||
case "Polygon": //面
|
||||
List<LatLng> latPolygon = GeometryTools.getLatLngs(geo);
|
||||
assert latPolygon != null;
|
||||
poiListEntity.setX(latPolygon.get(0).longitude + "");
|
||||
poiListEntity.setY(latPolygon.get(0).latitude + "");
|
||||
break;
|
||||
}
|
||||
initMarker(poiListEntity, true);
|
||||
switch (listBean.getType()){
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
@ -1638,12 +1621,101 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(getActivity(), "数据为空", Toast.LENGTH_SHORT).show();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("poiEntity", poiEntity);
|
||||
switch (poiEntity.getType()) {
|
||||
case 1:
|
||||
initMarker(poiEntity, false);
|
||||
PoiFragment poiFragment = PoiFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 2:
|
||||
initMarker(poiEntity, false);
|
||||
ChargingStationFragment chargingStationFragment = ChargingStationFragment.newInstance(bundle);
|
||||
showSlidingFragment(chargingStationFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
|
||||
initMarker(poiEntity, false);
|
||||
PoiVideoFragment poiVideoFragment = PoiVideoFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiVideoFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 4:
|
||||
initMarker(poiEntity, false);
|
||||
RoadFragment roadFragment = RoadFragment.newInstance(bundle);
|
||||
showSlidingFragment(roadFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 5:
|
||||
initMarker(poiEntity, false);
|
||||
OtherFragment otherFragment = OtherFragment.newInstance(bundle);
|
||||
showSlidingFragment(otherFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 6:
|
||||
initMarker(poiEntity, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
poiEntityArrayList.add(poiEntity);
|
||||
}
|
||||
|
||||
} else {
|
||||
JobSearchBean.BodyBean.ListBean listBean = (JobSearchBean.BodyBean.ListBean) marker.getTag();
|
||||
if (listBean != null) {
|
||||
PoiEntity poiListEntity = new PoiEntity();
|
||||
poiListEntity.setTaskId(listBean.getId());
|
||||
poiListEntity.setGeoWkt(listBean.getGeo());
|
||||
poiListEntity.setName(listBean.getName());
|
||||
poiListEntity.setAddress(listBean.getAddress());
|
||||
poiListEntity.setTelPhone(listBean.getTelephone());
|
||||
poiListEntity.setPrecision(listBean.getPrice() + "");
|
||||
poiListEntity.setDist(listBean.getDist() + "");
|
||||
poiListEntity.setDescribe(listBean.getMemo());
|
||||
poiListEntity.setCreateTime(listBean.getEndDate());
|
||||
poiListEntity.setType(listBean.getType());
|
||||
String geo = listBean.getGeo();
|
||||
poiListEntity.setGeoWkt(geo);
|
||||
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.getLatLngs(geo);
|
||||
assert latLineString != null;
|
||||
poiListEntity.setX(latLineString.get(0).longitude + "");
|
||||
poiListEntity.setY(latLineString.get(0).latitude + "");
|
||||
break;
|
||||
}
|
||||
if (isBack) {
|
||||
initMarker(poiListEntity, true);
|
||||
switch (listBean.getType()) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
poiEntityArrayList.add(poiListEntity);
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(getActivity(), "数据为空", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@ -1655,8 +1727,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
} else {
|
||||
Objects.requireNonNull(getActivity()).finish();
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1664,18 +1734,121 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
|
||||
* 获取屏幕中心点位置
|
||||
*/
|
||||
public LatLng getMapCenterPoint() {
|
||||
// int left = treasureMap.getLeft();
|
||||
// int top = treasureMap.getTop();
|
||||
// int right = treasureMap.getRight();
|
||||
// int bottom = treasureMap.getBottom();
|
||||
// // 获得屏幕点击的位置
|
||||
// int x = (int) (treasureMap.getX() + (right - left) / 2);
|
||||
// int y = (int) (treasureMap.getY() + (bottom - top) / 2);
|
||||
// Projection projection = tangentMap.getProjection();
|
||||
// LatLng pt = projection.fromScreenLocation(new Point(x, y));
|
||||
return tencentMap.getCameraPosition().target;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义dialog
|
||||
*/
|
||||
public void customDialog(List<PoiEntity> list, Marker marker) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()));
|
||||
final AlertDialog dialog = builder.create();
|
||||
View dialogView = View.inflate(getActivity(), R.layout.layout_marker_dialog, null);
|
||||
dialog.setView(dialogView);
|
||||
Window win = dialog.getWindow();
|
||||
assert win != null;
|
||||
win.setGravity(Gravity.BOTTOM); // 这里控制弹出的位置
|
||||
win.getDecorView().setPadding(0, 0, 0, 0);
|
||||
WindowManager.LayoutParams lp = win.getAttributes();
|
||||
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
|
||||
dialog.getWindow().setBackgroundDrawable(null);
|
||||
win.setAttributes(lp);
|
||||
dialog.show();
|
||||
RecyclerView recyclerView = dialogView.findViewById(R.id.rv_marker_view);
|
||||
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
|
||||
MarkerAdapter markerAdapter = new MarkerAdapter(list, getActivity());
|
||||
recyclerView.setAdapter(markerAdapter);
|
||||
markerAdapter.setOnBankClick(new MarkerAdapter.OnBankClick() {
|
||||
@Override
|
||||
public void onClick(PoiEntity poiEntity) {
|
||||
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
|
||||
if (poiEntity.getTaskStatus() == 0) {//网络未领取,
|
||||
initMarker(poiEntity, true);
|
||||
switch (poiEntity.getType()) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
break;
|
||||
}
|
||||
} else if (poiEntity.getTaskStatus() == 1 || poiEntity.getTaskStatus() == 2 || poiEntity.getTaskStatus() == 3 || poiEntity.getTaskStatus() == 4) {//本地数据 或已领取的数据
|
||||
frameLayout.setVisibility(View.GONE);
|
||||
if (gatherGetFragment != null) {
|
||||
fragmentTransaction.remove(gatherGetFragment);
|
||||
}
|
||||
if (bigMarker != null) {
|
||||
bigMarker.setVisible(false);
|
||||
}
|
||||
for (int i = 0; i < removableScreenMarker.size(); i++) {
|
||||
removableScreenMarker.get(i).remove();
|
||||
}
|
||||
removableScreenMarker.clear();
|
||||
if (poiEntity.getTaskStatus() == 1) {//已领取
|
||||
initMarker(poiEntity, true);
|
||||
switch (poiEntity.getType()) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("poiEntity", poiEntity);
|
||||
switch (poiEntity.getType()) {
|
||||
case 1:
|
||||
initMarker(poiEntity, false);
|
||||
PoiFragment poiFragment = PoiFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 2:
|
||||
initMarker(poiEntity, false);
|
||||
ChargingStationFragment chargingStationFragment = ChargingStationFragment.newInstance(bundle);
|
||||
showSlidingFragment(chargingStationFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 3:
|
||||
initMarker(poiEntity, false);
|
||||
PoiVideoFragment poiVideoFragment = PoiVideoFragment.newInstance(bundle);
|
||||
showSlidingFragment(poiVideoFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 4:
|
||||
initMarker(poiEntity, false);
|
||||
RoadFragment roadFragment = RoadFragment.newInstance(bundle);
|
||||
showSlidingFragment(roadFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 5:
|
||||
initMarker(poiEntity, false);
|
||||
OtherFragment otherFragment = OtherFragment.newInstance(bundle);
|
||||
showSlidingFragment(otherFragment);
|
||||
marker.remove();
|
||||
break;
|
||||
case 6:
|
||||
initMarker(poiEntity, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
|
@ -7,6 +7,8 @@ public class HttpInterface {
|
||||
public static final String DATA_IP = "http://172.23.139.4:9999/m4";//接口
|
||||
public static final String TEST_IP = "http://dtxbmaps.navinfo.com/dtxb_test/m4";//测试接口
|
||||
public static final String TEST_GUIDANCE_IP = "http://172.21.98.90:9999/m4";//引导页完成接口
|
||||
public static final String APKIP = "http://172.23.139.4:8001/";
|
||||
|
||||
|
||||
|
||||
public static final String USER_PATH = "/user/";//我的
|
||||
@ -19,22 +21,27 @@ public class HttpInterface {
|
||||
*/
|
||||
//dtxbmaps.navinfo.com/dtxb/m4/user/appVersion/checkVersion?version=155&operationType=android
|
||||
//172.23.139.4:8001/appVersion/checkVersion?version=155&operationType=android version是版本 operationType固定值 安卓 get
|
||||
public static String APKIP = "http://172.23.139.4:8001/";
|
||||
public static final String APP_CHECK_VERSION = IP + USER_PATH + "appVersion/1/checkVersion"; //版本升级
|
||||
public static String APP_CHECK_VERSION ; //版本升级
|
||||
|
||||
public static void initAppPath(String userId) {
|
||||
APP_CHECK_VERSION = TEST_IP + USER_PATH + "appVersion/"+userId+"/checkVersion"; //版本升级
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的
|
||||
* Path=/m4/user/*
|
||||
*/
|
||||
//172.23.139.4:8001/m4/user/update
|
||||
public static String USER_UPDATE ;//用户资料
|
||||
public static String USER_UPDATE;//用户资料
|
||||
//172.23.139.4:8001/m4/userBankcard/update
|
||||
public static String USER_BANKCARD_UP_DATA ; //绑定银行卡
|
||||
public static String USER_BANKCARD_UP_DATA; //绑定银行卡
|
||||
//172.23.139.4:8001/m4/userAuth/add
|
||||
public static String USER_AUTH_ADD; //实名认证
|
||||
//172.23.139.4:9999/m4/user/userLocation/1/userLocation post 参数 geom:geohash加密
|
||||
public static String USER_LOCATION ; //上传用户坐标
|
||||
public static String USER_LOCATION; //上传用户坐标
|
||||
//dtxbmaps.navinfo.com/dtxb/m4/user/user/1/getUserDetailByUserid/1?datetime=1628749294718
|
||||
public static String USER_DETAIL_BY_USER_ID ; //获取用户信息
|
||||
public static String USER_DETAIL_BY_USER_ID; //获取用户信息
|
||||
//http://172.21.98.90:9999/m4/user/userGuide/1/insertUserGuide
|
||||
public static String INSERT_USER_GUIDE;//引导页完成接口
|
||||
/**
|
||||
@ -42,26 +49,26 @@ public class HttpInterface {
|
||||
* Path=/m4/msgList/**
|
||||
*/
|
||||
// public static String IP1 = "http://dtxbmaps.navinfo.com/dtxb/msg/";
|
||||
public static String MSG_CONTENT ;//发现 -富文本详情页请求
|
||||
public static String LIST_TASK ;//任务专区
|
||||
public static String MSG_CONTENT;//发现 -富文本详情页请求
|
||||
public static String LIST_TASK;//任务专区
|
||||
public static String LIST_EVENT;//活动专区
|
||||
public static String LIST_TASK_EXPLAIN ;//任务说明
|
||||
public static String LIST_TASK_EXPLAIN;//任务说明
|
||||
//http://172.23.139.4:8002/findAndMessage/1/msg_list?fid=1&pageNum=1&pageSize=2
|
||||
public static String MSG_LISt ;//发现查询接口
|
||||
public static String MSG_LISt;//发现查询接口
|
||||
//http://172.23.139.4:8002/findAndMessage/1/exam_content?id=11
|
||||
public static String EXAM_CONTENT;//发现 -能力测评获取试题接口
|
||||
//http://172.23.139.4:8002/findAndMessage/1/submitExam
|
||||
public static String EXAM_SUBMIT ;//发现 -能力测评提交试卷 post
|
||||
public static String EXAM_SUBMIT;//发现 -能力测评提交试卷 post
|
||||
/**
|
||||
* 登录
|
||||
* Path=/m4/userlogin/**
|
||||
*/
|
||||
//http://172.23.139.4:9999/m4/userlogin/oauth/token
|
||||
public static String USER_LOGIN_OAUTH_TOKEN= TEST_IP + USER_LOGIN_PATH + "oauth/token" ; //登录接口
|
||||
public static String USER_LOGIN_OAUTH_TOKEN = TEST_IP + USER_LOGIN_PATH + "oauth/token"; //登录接口
|
||||
///m4/user/user/register
|
||||
public static String USER_REGISTER= TEST_IP + USER_PATH + "user/register" ;//注册接口
|
||||
public static String USER_REGISTER = TEST_IP + USER_PATH + "user/register";//注册接口
|
||||
///m4/user/ phone/message
|
||||
public static String USER_MESSAGE= TEST_IP + USER_PATH + "phone/message" ;//获取验证码 type 1:注册获取 2:更新
|
||||
public static String USER_MESSAGE = TEST_IP + USER_PATH + "phone/message";//获取验证码 type 1:注册获取 2:更新
|
||||
///m4/user/user/forgetPassword
|
||||
public static String USER_FORGET_PASSWORD = TEST_IP + USER_PATH + "user/forgetPassword";//忘记密码
|
||||
|
||||
@ -72,62 +79,63 @@ public class HttpInterface {
|
||||
* Path=/m4/price/**
|
||||
*/
|
||||
//http://172.23.139.4:8004/userPrice/1/getPrice
|
||||
public static String GET_PRICE ;//我的-总资产
|
||||
public static String GET_PRICE;//我的-总资产
|
||||
//http://172.23.139.4:8004/userPrice/1/userPriceExchange?exchangeMoney=10&payType=1
|
||||
public static String USER_PRICE_EXCHANGE ;//我的-财务信息-提现
|
||||
public static String USER_PRICE_EXCHANGE;//我的-财务信息-提现
|
||||
//dtxbmaps.navinfo.com/dtxb/m4/price/priceExchange/1/getList?datetime=1628647356815
|
||||
public static String PRICE_EXCHANGE ;//提现记录
|
||||
public static String PRICE_EXCHANGE;//提现记录
|
||||
/**
|
||||
* 任务
|
||||
* Path=/m4/task/**
|
||||
*/
|
||||
//172.23.139.4:8003/m4/task/1/getList
|
||||
public static String TASK_LIST ; //任务搜索
|
||||
public static String TASK_LIST; //任务搜索
|
||||
//172.23.139.4:8003/othertask/1/receivedOthertask
|
||||
public static String RECEIVED_OTHER_TASK ;//其他-领取任务
|
||||
public static String RECEIVED_OTHER_TASK;//其他-领取任务
|
||||
//172.23.139.4:8003/poitask/1/receivedPoitask/1
|
||||
public static String RECEIVED_POI_TASK ;//poi-领取任务
|
||||
public static String RECEIVED_POI_TASK;//poi-领取任务
|
||||
//172.23.139.4:8003/poitask/1/submitPoitask?taskId=5001&name=测试修改名称&address=测试修改地址&existence=1&geo=1rn7exd5uhxy&memo=测试备注...33.
|
||||
public static String SUBMIT_POI_TASK ;//poi-保存本地
|
||||
public static String SUBMIT_POI_TASK;//poi-保存本地
|
||||
//172.23.139.4:8003/othertask/1/submitOhtertask?taskId=5001&name=测试修改名称&address=测试修改地址&existence=1&geo=1rn7exd5uhxy&memo=测试备注
|
||||
public static String SUBMIT_OTHER_TASK ;//其他-保存本地
|
||||
public static String SUBMIT_OTHER_TASK;//其他-保存本地
|
||||
//172.23.139.4:8003/othertask/1/uploadpic
|
||||
public static String OTHER_TASK_UPLOAD_PIC;//其他-上传
|
||||
//172.23.139.4:8003/ctask/1/receivedCtask/8608
|
||||
public static String RECEIVED_CTASK ;//充电站-领取任务
|
||||
public static String RECEIVED_CTASK;//充电站-领取任务
|
||||
//172.23.139.4:8003/ctask/1/submitCtask?id=8608&name=充电站&address=地址&telephone=18812345678|14712345678&geo=1rn7exd5uhxy&memo=测试备注&sptype=1
|
||||
public static String SUBMIT_CTASK ;//充电站-保存本地
|
||||
public static String SUBMIT_CTASK;//充电站-保存本地
|
||||
//172.23.139.4:8003/cstask/1/submitCstask?taskId=0&name=充电站&geo=1rn7exd5uhxy&memo=测试备注&sptype=1&ffid=104&existence=1&detail={"cp_openType":"1,2","cp_floor":1,"cp_availableState":0,"sign_exist":0}
|
||||
public static String SUBMIT_CSTASK ;//充电桩保存
|
||||
public static String SUBMIT_CSTASK;//充电桩保存
|
||||
//172.23.139.4:8003/poitask/1/uploadpic
|
||||
public static String POI_TASK_UPLOAD_PIC ;//poi-上传
|
||||
public static String POI_TASK_UPLOAD_PIC;//poi-上传
|
||||
//172.23.139.4:8003/roadtask/1/receivedRoadtask/8569
|
||||
public static String RECEIVED_ROAD_TASK ;//道路任务获取
|
||||
public static String RECEIVED_ROAD_TASK;//道路任务获取
|
||||
//172.23.139.4:8003/poivideotask/1/receivedPoivideotask/8569
|
||||
public static String RECEIVED_POI_VIDEO_TASK ;//poi录像任务获取
|
||||
public static String RECEIVED_POI_VIDEO_TASK;//poi录像任务获取
|
||||
// 172.23.139.4:8003/poivideotask/1/submitPoivideotask
|
||||
public static String INSIDE_API_LIST ;//poi录像 保存
|
||||
public static String INSIDE_API_LIST;//poi录像 保存
|
||||
//172.23.139.4:8003/poivideotask/1/uploadpic
|
||||
public static String POI_VIDEO_UPLOAD_PIC;//poi录像-上传
|
||||
//172.23.139.4:8003/roadtask/1/submitRoadtask?taskId=0&name=段哥&address=二娃&memo=1rn7exd5uhxy&workType=2
|
||||
public static String ROAD_TASK_SUBMIT ;//道路录像-保存本地
|
||||
public static String ROAD_TASK_SUBMIT;//道路录像-保存本地
|
||||
//172.23.139.4:8003/roadtask/1/uploadpic
|
||||
public static String ROAD_TASK_UPLOAD_PIC ;//道路录像—上传
|
||||
public static String ROAD_TASK_UPLOAD_PIC;//道路录像—上传
|
||||
//http://172.23.139.4:8003/m4/task/1/getPhone?geo=1rn7exd5uhxy
|
||||
public static String GET_PHONES ;//电话区号和电话位数
|
||||
public static String GET_PHONES;//电话区号和电话位数
|
||||
//172.23.139.4:8003/cstask/1/uploadpic
|
||||
public static String CS_TASK_UP_LOAD_PIC;//充电桩-上传
|
||||
//172.23.139.4:8003/ctask/1/uploadpic
|
||||
public static String C_TASK_UP_LOAD_PIC ;//充电站-上传
|
||||
public static String C_TASK_UP_LOAD_PIC;//充电站-上传
|
||||
//172.23.139.4:8003/m4/task/1/taskName?geo=1rn7exd5uhxy&name=四维
|
||||
public static String TASK_NAME ;//poi-查重
|
||||
public static String TASK_NAME;//poi-查重
|
||||
//172.23.139.4:8003/m4/task/1/getCommitList?type=2&pageSize=10&pageNum=1
|
||||
public static String GET_COMMIT_LIST ;//紀錄——已提交
|
||||
public static String RECEIVED_POLYGON_TASK ; //面状任务任务领取
|
||||
public static String GET_COMMIT_LIST;//紀錄——已提交
|
||||
public static String RECEIVED_POLYGON_TASK; //面状任务任务领取
|
||||
//172.23.139.4:8003/m4/task/1/unReceivedTask?taskIds=&auditIds=214,278 取消领取的接口
|
||||
public static String UNRECEIVED_POLYGON_TASK ;//所有類型结束领取
|
||||
public static String COMPLETE ;//面状任务结束领取
|
||||
public static String SUBMIT_POLYGON_TASK ;//面状任务开始采集
|
||||
public static String UNRECEIVED_POLYGON_TASK;//所有類型结束领取
|
||||
public static String COMPLETE;//面状任务结束领取
|
||||
public static String SUBMIT_POLYGON_TASK;//面状任务开始采集
|
||||
|
||||
public static void initHttpInter(String USERID) {
|
||||
/**
|
||||
* 我的
|
||||
@ -144,7 +152,7 @@ public class HttpInterface {
|
||||
//dtxbmaps.navinfo.com/dtxb/m4/user/user/1/getUserDetailByUserid/1?datetime=1628749294718
|
||||
USER_DETAIL_BY_USER_ID = TEST_IP + USER_PATH + "user/" + USERID + "/getUserDetailByUserid/" + USERID; //获取用户信息
|
||||
//http://172.21.98.90:9999/m4/user/userGuide/1/insertUserGuide
|
||||
INSERT_USER_GUIDE=TEST_IP +USER_PATH+"userGuide/"+USERID+"/insertUserGuide";//引导页完成接口
|
||||
INSERT_USER_GUIDE = TEST_IP + USER_PATH + "userGuide/" + USERID + "/insertUserGuide";//引导页完成接口
|
||||
/**
|
||||
* 发现
|
||||
* Path=/m4/msgList/**
|
||||
@ -225,7 +233,6 @@ public class HttpInterface {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* public static String IPm8 = "http://172.23.139.4:8003/m4/";
|
||||
* http://172.23.139.4:8003/m4/task/1/unReceivedTask?taskIds=&auditIds=214,278
|
||||
|
@ -555,6 +555,21 @@ public class GeometryTools {
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<LatLng> getLatList(Geometry geo){
|
||||
List<LatLng> list = null;
|
||||
Coordinate[] coordinates = geo.getCoordinates();
|
||||
if (coordinates != null && coordinates.length > 0) {
|
||||
list = new ArrayList<LatLng>();
|
||||
for (Coordinate coor : coordinates) {
|
||||
list.add(new LatLng(coor.y, coor.x));
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static Coordinate[] getLatLngs2(String str) {
|
||||
Coordinate[] coordinates = null;
|
||||
if (str == null || str.trim().equals(""))
|
||||
|
28
app/src/main/res/layout/item_marker.xml
Normal file
28
app/src/main/res/layout/item_marker.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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="60dp"
|
||||
android:layout_margin="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_icon"
|
||||
android:layout_width="15dp"
|
||||
android:layout_height="45dp"
|
||||
android:layout_marginStart="20dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.26"
|
||||
app:layout_constraintStart_toEndOf="@+id/iv_icon"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
18
app/src/main/res/layout/layout_marker_dialog.xml
Normal file
18
app/src/main/res/layout/layout_marker_dialog.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:background="@color/white"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_marker_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="300dp"
|
||||
android:layout_margin="10dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
x
Reference in New Issue
Block a user