diff --git a/app/build.gradle b/app/build.gradle index db38c8b..d570a21 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '29.0.2' - ndkVersion '23.0.7123448' + //ndkVersion '23.0.7123448' defaultConfig { applicationId "com.navinfo.outdoor" @@ -11,7 +11,6 @@ android { targetSdkVersion 30 versionCode 1 versionName "1.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } lintOptions { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java index 000b384..668de6a 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/MainActivity.java @@ -311,8 +311,7 @@ public class MainActivity extends BaseActivity { fileOutputStream.flush(); fileOutputStream.close(); } - //apk下载完成,使用Handler()通知安装apk - handler.sendEmptyMessage(0); + handler.sendEmptyMessage(0);//apk下载完成,使用Handler()通知安装apk } } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java index 6c40db3..23165c0 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PicturesActivity.java @@ -225,7 +225,7 @@ public class PicturesActivity extends BaseActivity implements View.OnClickListen } else { message.what = 0x101; Toast.makeText(PicturesActivity.this, "保存成功" + (videoIndex+1), Toast.LENGTH_SHORT).show(); - handler.sendMessageDelayed(message, 2000); + handler.sendMessageDelayed(message, 1500); } } } diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java index 715861b..6a3b88c 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java @@ -6,9 +6,12 @@ import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; import com.navinfo.outdoor.R; @@ -25,13 +28,23 @@ import java.util.List; */ public class FilterAdapter extends RecyclerView.Adapter { private Context context; - private List allPoi; + private List allPoi=new ArrayList<>(); - public FilterAdapter(Context context, List allPoi) { + public FilterAdapter(Context context) { this.context = context; - this.allPoi = allPoi; } + public void setAllPoi(List allPoi) { + this.allPoi.clear(); + this.allPoi.addAll(allPoi); + notifyDataSetChanged(); + } + + public void setAddFilter(boolean addFilter) { + for (int i = 0; i < allPoi.size(); i++) { + allPoi.get(i).setChecked(addFilter); + } + } @NonNull @Override @@ -44,13 +57,13 @@ public class FilterAdapter extends RecyclerView.Adapter poiEntities; + private PoiDao poiDao; + private ArrayList btnChock; public static FilterFragment newInstance(Bundle bundle) { @@ -84,7 +89,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } onBackPressed(); } - }); } @@ -154,8 +158,8 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi poiEntities.add(allPoi.get(i)); } } - } + filterAdapter.setAllPoi(poiEntities); } else if (data.what == Constant.JOB_SEARCH_WORD) { JobSearchBean jobSearchBean = (JobSearchBean) data.obj; if (jobSearchBean != null) { @@ -165,47 +169,52 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi poiEntity.setTaskId(list.get(i).getId()); poiEntity.setName(list.get(i).getName()); poiEntity.setAddress(list.get(i).getAddress()); - poiEntity.setTelPhone(list.get(i).getTelephone() + ""); + poiEntity.setTelPhone(list.get(i).getTelephone()+""); poiEntity.setPrecision(list.get(i).getPrice()+""); poiEntity.setDist(list.get(i).getDist()+""); poiEntity.setType(list.get(i).getType()); String geo = list.get(i).getGeo(); poiEntity.setGeoWkt(geo); Geometry geometry = GeometryTools.createGeometry(geo); - if (geometry.getGeometryType().equals("Point")) {//点 - LatLng latLng = GeometryTools.createLatLng(geo); - poiEntity.setX(latLng.longitude + ""); - poiEntity.setY(latLng.latitude + ""); - } else if (geometry.getGeometryType().equals("LineString")) {//线 - List latLineString = GeometryTools.getLatLags(geo); - assert latLineString != null; - poiEntity.setX(latLineString.get(0).longitude + ""); - poiEntity.setY(latLineString.get(0).latitude + ""); - } else if (geometry.getGeometryType().equals("Polygon")) {//面 - List latPolygon = GeometryTools.getLatLags(geo); - assert latPolygon != null; - poiEntity.setX(latPolygon.get(0).longitude + ""); - poiEntity.setY(latPolygon.get(0).latitude + ""); + switch (geometry.getGeometryType()) { + case "Point": //点 + LatLng latLng = GeometryTools.createLatLng(geo); + poiEntity.setX(latLng.longitude + ""); + poiEntity.setY(latLng.latitude + ""); + break; + case "LineString": //线 + case "Polygon": //面 + List latLineString = GeometryTools.getLatLags(geo); + assert latLineString != null; + poiEntity.setX(latLineString.get(0).longitude + ""); + poiEntity.setY(latLineString.get(0).latitude + ""); + break; } poiEntities.add(poiEntity); } } + filterAdapter.setAllPoi(poiEntities); } else if (data.what == Constant.FILTER_DATA_CLEAR) { poiEntities.clear(); } - filterAdapter.notifyDataSetChanged(); + + Log.d("ssssssssssssss", "onEvent: "+"sssssssssssssssssssssssssssss"); } + @SuppressLint("SetTextI18n") @Override protected void initData() { super.initData(); PoiDatabase poiDatabase = PoiDatabase.getInstance(getContext()); - PoiDao poiDao = poiDatabase.getPoiDao(); + poiDao = poiDatabase.getPoiDao(); poiEntities = new ArrayList<>(); ConstraintLayout clNumber = findViewById(R.id.cl_number); clNumber.setOnClickListener(this); tvNumber = findViewById(R.id.tv_number); tvNumber.setText(Constant.NUMBER + ""); + CheckBox checkOk = findViewById(R.id.check_ok); + Button btnDraw = findViewById(R.id.btn_draw); + btnDraw.setOnClickListener(this); ConstraintLayout clPhotograph = findViewById(R.id.cl_photograph); clPhotograph.setOnClickListener(this); tvPhotograph = findViewById(R.id.tv_photograph); @@ -243,12 +252,12 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi tvType.setText("未领取"); } else if (Constant.TASK_STARTUP == 1) { tvType.setText("已领取"); - }/* else if (Constant.TASK_STATUS == 2) { + } + /* else if (Constant.TASK_STATUS == 2) { tvType.setText("未保存"); } else if (Constant.TASK_STATUS == 3) { tvType.setText("已保存"); }*/ - Button btnFilter = findViewById(R.id.btn_filter); btnFilter.setOnClickListener(this); setSlidingUpPanelLayout(Constant.SLIDING_LAYOUT); @@ -261,11 +270,10 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi recyclerFilter.addItemDecoration(new DividerItemDecoration(Objects.requireNonNull(getContext()), DividerItemDecoration.VERTICAL)); recyclerFilter.setRefreshProgressStyle(ProgressStyle.SemiCircleSpin); recyclerFilter.setLoadingMoreProgressStyle(ProgressStyle.BallRotate); - //取消上啦加载下拉刷新 recyclerFilter.setPullRefreshEnabled(false); recyclerFilter.setLoadingMoreEnabled(false); - filterAdapter = new FilterAdapter(getContext(), poiEntities); + filterAdapter = new FilterAdapter(getContext()); recyclerFilter.setAdapter(filterAdapter); recyclerFilter.setScrollAlphaChangeListener(new XRecyclerView.ScrollAlphaChangeListener() { @Override @@ -275,33 +283,47 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi return 0; } }); - recyclerFilter.getDefaultFootView().setNoMoreHint("成功加载完毕"); recyclerFilter.setLoadingListener(new XRecyclerView.LoadingListener() { @Override - public void onRefresh() { - - } - - + public void onRefresh() {} @Override - public void onLoadMore() { - + public void onLoadMore() {} + }); + checkOk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + filterAdapter.setAddFilter(true); + filterAdapter.notifyDataSetChanged(); } }); filterAdapter.setItemCLick(new FilterAdapter.ItemCLick() { @Override public void item(PoiEntity poiEntity) { + //查看详情 Message obtains = Message.obtain(); obtains.what = Constant.FILTER_LIST_ITEM; obtains.obj = poiEntity; EventBus.getDefault().post(obtains); } }); + btnChock = new ArrayList<>();//存储选择中的的数据 + filterAdapter.setItemOnCLick(new FilterAdapter.ItemOnCLick() { + @Override + public void item(PoiEntity poiEntity, boolean isChockBox) { + if (isChockBox){ + btnChock.add(poiEntity); + }else { + for (int i = 0; i < btnChock.size(); i++) { + if (poiEntity.getId().equals(btnChock.get(i).getId())){ + btnChock.remove(poiEntity); + } + } + } + } + }); } - - @Override public void onClick(View v) { switch (v.getId()) { @@ -339,7 +361,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } }); break; - case R.id.cl_photograph: BottomMenu.show((AppCompatActivity) Objects.requireNonNull(getContext()), new String[]{"全部", "普通任务", "专属任务"}, new OnMenuItemClickListener() { @Override @@ -363,8 +384,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } }); break; - - /* 1 "POI" 2 "充电站" @@ -400,7 +419,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi case 6: Constant.TASK_TYPE = 6; break; - } Message obtain = Message.obtain(); obtain.what = Constant.JOB_WORD_MONITOR; @@ -409,7 +427,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } }); break; - case R.id.cl_type://任务状态 0.未领取 1.已领取,2.未保存(保存到本地但未提交成功),3.已保存(保存到本地提交成功),4已上传(结束采集), BottomMenu.show((AppCompatActivity) Objects.requireNonNull(getContext()), new String[]{"全部", "未领取", "已领取"/*, "未保存", "已保存"*/}, new OnMenuItemClickListener() { @Override @@ -439,7 +456,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } }); break; - } } @@ -454,6 +470,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi protected PoiEntity initPoiEntityByUI(PoiEntity entity) { return null; } + @Override protected PoiCheckResult checkPoiEntity(PoiEntity entity) { return null; diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java index 8cc092c..4ca8495 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/StaySubmitFragment.java @@ -309,11 +309,13 @@ public class StaySubmitFragment extends BaseFragment implements View.OnClickList public void run() { roadEntities.clear(); roadEntities.addAll(roadAll); + // for (int i = 0; i < roadAll.size(); i++) { // if (roadAll.get(i).getType()!=6){ // roadEntities.add(roadAll.get(i)); // } // } + Log.d("TAG", "run: " + roadEntities.toString()); staySubmitAdapter.setAllRoad(roadEntities); staySubmitAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index f27c117..27d2ff1 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -1,5 +1,6 @@ package com.navinfo.outdoor.fragment; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -161,6 +162,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen private ArrayList poiEntityArrayList; private ImageView ivMassNotification; private int messageType = 0;//0: 已读消息 1:新消息 + private SharedPreferences.Editor sharedEdit; + private SharedPreferences sharedPreferences; public static TreasureFragment newInstance(Bundle bundle) { @@ -178,30 +181,34 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen * 刷新筛选界面数据 */ private void refreshFilterData() { - //获取系统当前的时间 - DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(System.currentTimeMillis()); - String format = formatter.format(calendar.getTime()); - SharedPreferences messageTypeSp = getActivity().getSharedPreferences("messageType", Context.MODE_PRIVATE); - String dataTime = messageTypeSp.getString("dataTime", null); - int messageTypeSpInt = messageTypeSp.getInt("messageType", 0); - try { - Date parse = formatter.parse(format); - if (dataTime!=null){ - Date parse1 = formatter.parse(dataTime); - if (parse.getTime() + parse1.getTime() >= 1) { - // initMessageNotice(); - Log.d("TAG", "refreshFilterData: " + parse + "和" + parse1); - } else { - return; - } + String dataTime = sharedPreferences.getString("dataTime", null); + int type = sharedPreferences.getInt("type", 0); + + + if (type == 0) {//隐藏 + ivMassNotification.setVisibility(View.GONE); + } else {//显示S + ivMassNotification.setVisibility(View.VISIBLE); + } + if (dataTime == null) { + initMessageNotice(); + } else { + String newData = addDateMinot(dataTime, 3);//是否三个小时之后 + DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + String presentData = formatter.format(calendar.getTime());//当前时间 + int result = presentData.compareTo(newData); + if (result>=0){ + //进行请求 + initMessageNotice(); + }else { + //无需请求 } - } catch (ParseException e) { - e.printStackTrace(); } + Message msg = Message.obtain(); msg.what = Constant.FILTER_DATA_CLEAR; EventBus.getDefault().post(msg); @@ -272,10 +279,10 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); String format = formatter.format(calendar.getTime()); - SharedPreferences.Editor spMessageType = getActivity().getSharedPreferences("messageType", getActivity().MODE_PRIVATE).edit(); - spMessageType.putInt("messageType", messageType); - spMessageType.putString("dataTime", format); - spMessageType.commit(); + Log.d("TAG", "onSuccessssss: " + format); + sharedEdit.putInt("type", messageType); + sharedEdit.putString("dataTime", format); + sharedEdit.commit(); } else { Toast.makeText(getActivity(), messageNoticeBean.getMessage() + "", Toast.LENGTH_SHORT).show(); } @@ -290,10 +297,14 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } + @SuppressLint("CommitPrefEdits") @Override protected void initView() { super.initView(); EventBus.getDefault().register(this); + sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE); + sharedEdit = sharedPreferences.edit(); + //fragment 管理器 supportFragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager(); @@ -622,8 +633,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);*/ + String poiGeo = initGeo(latLng); + geoMarker(poiGeo, poiMarker); poiMarker.setClickable(true); break; case 2://充电站 @@ -636,8 +647,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);*/ + String stationGeo = initGeo(latLng); + geoMarker(stationGeo, stationMarker); stationMarker.setClickable(true); break; @@ -651,8 +662,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);*/ + String poiVideoGeo = initGeo(latLng); + geoMarker(poiVideoGeo, poiVideoMarker); poiVideoMarker.setClickable(true); break; case 4://道路录像 @@ -665,8 +676,8 @@ 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);*/ + String roadGeo = initGeo(latLng); + geoMarker(roadGeo, roadMarker); roadMarker.setClickable(true); break; case 5://其他 @@ -679,8 +690,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);*/ + String otherGeo = initGeo(latLng); + geoMarker(otherGeo, otherMarker); otherMarker.setClickable(true); break; case 6://面状任务 @@ -693,8 +704,8 @@ 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); + String planarGeo = initGeo(latLng); + geoMarker(planarGeo, planarMarker); planarMarker.setClickable(true); break; } @@ -953,8 +964,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); + String poiGeo = initGeo(latLng); + geoMarker(poiGeo, poiMarker); break; case 2://充电站 BitmapDescriptor chargeDescriptor = null; @@ -973,8 +984,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); + String stationGeo = initGeo(latLng); + geoMarker(stationGeo, stationMarker); break; case 3://poi录像 BitmapDescriptor poiVideoDescriptor = null; @@ -993,8 +1004,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); + String poiVideoGeo = initGeo(latLng); + geoMarker(poiVideoGeo, poiVideoMarker); break; case 4://道路录像 BitmapDescriptor roadDescriptor = null; @@ -1013,8 +1024,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); + String roadGeo = initGeo(latLng); + geoMarker(roadGeo, roadMarker); break; case 5://其他 BitmapDescriptor otherDescriptor = null; @@ -1033,8 +1044,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); + String otherGeo = initGeo(latLng); + geoMarker(otherGeo, otherMarker); break; case 6://面状任务 BitmapDescriptor Descriptor = null; @@ -1053,8 +1064,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); + String planarGeo = initGeo(latLng); + geoMarker(planarGeo, planarMarker); break; } } @@ -1646,54 +1657,51 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen TencentMap.OnMarkerClickListener markerClickListener = new TencentMap.OnMarkerClickListener() { @Override public boolean onMarkerClick(Marker marker) { - initEntity(marker, true); - -// LatLng latLng = marker.getPosition(); -// ArrayList 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 { -// initEntity(marker, true); -// /*if (intersection.getGeometryType().equals("MultiPoint")) { -// List 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 markerList = removableHashMap.get(geometry.toText()); -// if (markerList != null) { -// for (Marker mar : markerList) { -// initEntity(mar, false); -// } -// } -// } -// customDialog(poiEntityArrayList, marker); -// } else { -// initEntity(marker, true); -// }*/ -// } + LatLng latLng = marker.getPosition(); + ArrayList 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 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 markerList = removableHashMap.get(geometry.toText()); + if (markerList != null) { + for (Marker mar : markerList) { + initEntity(mar, false); + } + } + } + customDialog(poiEntityArrayList, marker); + } else { + initEntity(marker, true); + } + } return false; } }; diff --git a/app/src/main/res/layout/fragment_filter.xml b/app/src/main/res/layout/fragment_filter.xml index a598036..6476535 100644 --- a/app/src/main/res/layout/fragment_filter.xml +++ b/app/src/main/res/layout/fragment_filter.xml @@ -179,11 +179,41 @@ app:layout_constraintTop_toTopOf="parent" /> + + + +