diff --git a/app/build.gradle b/app/build.gradle index 5e04152..8bed7c3 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" diff --git a/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java index f1c4634..7383512 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/PictureActivity.java @@ -14,6 +14,7 @@ import android.graphics.Matrix; import android.location.Location; import android.media.MediaMetadataRetriever; import android.os.Bundle; +import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.SystemClock; @@ -99,7 +100,6 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; -import static com.navinfo.outdoor.R.drawable.*; import static com.tencent.tencentmap.mapsdk.maps.model.MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE; @@ -129,6 +129,15 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene private ImageView ivPic; private PoiEntity poiEntity; private Polyline polyline; + private Handler handler=new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(@NonNull Message msg) { + if (btnSwitch!=null){ + btnSwitch.setEnabled(true); + } + return false; + } + }); @Override protected int getLayout() { @@ -251,7 +260,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene for (int i = 0; i < lineStringByVideoFileList.size(); i++) { LatLng latLng = lineStringByVideoFileList.get(i); if (latLng != null) { - BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(ic_baseline); + BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.ic_baseline); Marker marker = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor).alpha(0.9f) .flat(true) .clockwise(false)); @@ -411,7 +420,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene // 折线的颜色为绿色 .color(0xff00ff00) // 折线宽度为5像素 - .width(45) + .width(20) .arrow(true) .arrowSpacing(150) .arrowTexture(bitmapLine); @@ -461,6 +470,8 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene // } // break; case R.id.btn_switch: + v.setEnabled(false); + handler.sendEmptyMessageDelayed(0, 2000); // 利用handler延迟发送更改状态信息 btnSwich(); break; // case R.id.capuretVideo: @@ -555,7 +566,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene locationStyle = new MyLocationStyle(); locationStyle = locationStyle.myLocationType(LOCATION_TYPE_LOCATION_ROTATE); //创建图标 - BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(location)); + BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(getBitMap(R.drawable.location)); locationStyle.icon(bitmapDescriptor); //设置定位圆形区域的边框宽度; locationStyle.fillColor(getResources().getColor(android.R.color.transparent)); @@ -683,7 +694,7 @@ public class PictureActivity extends BaseActivity implements View.OnClickListene } sb.append("\r\n"); LatLng latLng = new LatLng(Constant.currentLocation.getLatitude(), Constant.currentLocation.getLongitude()); - BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(ic_baseline); + BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.circle); Marker marker = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor).alpha(0.9f) .flat(true) .clockwise(false)); diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/ChargingPileAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/ChargingPileAdapter.java index adb90fb..b31b241 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/ChargingPileAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/ChargingPileAdapter.java @@ -27,6 +27,10 @@ public class ChargingPileAdapter extends RecyclerView.Adapter getChargingPileEntities() { + return chargingPileEntities; + } + public void setChargingPileEntities(List chargingPileEntities) { this.chargingPileEntities.addAll(chargingPileEntities); notifyDataSetChanged(); 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 d1df46a..5eab7ae 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java @@ -43,21 +43,21 @@ public class FilterAdapter extends RecyclerView.Adapter cList = new ArrayList<>(); ArrayList dList = new ArrayList<>(); @@ -828,7 +867,7 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC public void onGranted(List permissions, boolean all) { if (all) { //保存数据库: - ChargingPileEntity chargingPileEntity = initChargingPileEntityByUI(new ChargingPileEntity()); + chargingPileEntity = initChargingPileEntityByUI(chargingPileEntity); PoiCheckResult poiCheckResult = checkChargingPileEntity(chargingPileEntity); if (poiCheckResult.getCode() == 1) { Toast.makeText(getActivity(), poiCheckResult.getMsg() + "", Toast.LENGTH_SHORT).show(); @@ -842,12 +881,17 @@ public class ChargingPileFragment extends BaseDrawerFragment implements View.OnC @Override public void run() { if (result[0] != 0) { + chargingPileEntity.setPileId(result[0]); ToastUtil.showShort(getActivity(), "充电桩保存成功"); - Message obtain = Message.obtain(); obtain.what = Constant.CHARGING_PILE_STATION; obtain.obj = chargingPileEntity; EventBus.getDefault().post(obtain); + + Message obtains = Message.obtain(); + obtains.what = Constant.PILE_MARKER_SHOW; + obtains.obj = true; + EventBus.getDefault().post(obtains); // chargingPileByWork(chargingPileEntity); getActivity().onBackPressed(); } else { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java index 51cf56d..06092f3 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -64,9 +64,11 @@ import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.ui.view.ContactView; import com.navinfo.outdoor.util.Geohash; +import com.navinfo.outdoor.util.GeometryTools; import com.navinfo.outdoor.util.PhotoUtils; import com.navinfo.outdoor.util.ToastUtil; import com.tencent.tencentmap.mapsdk.maps.TencentMap; +import com.tencent.tencentmap.mapsdk.maps.interfaces.Removable; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor; import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory; import com.tencent.tencentmap.mapsdk.maps.model.LatLng; @@ -132,6 +134,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. private NestedScrollView nestedScrollView; private Marker markerStation; private Point screenStationPositions; + private List removablesLocality; public static ChargingStationFragment newInstance(Bundle bundle) { ChargingStationFragment fragment = new ChargingStationFragment(); @@ -212,6 +215,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. checkBoxLife = findViewById(R.id.check_pot_life); checkBoxRight = findViewById(R.id.check_pot_right); nestedScrollView = findViewById(R.id.nested_scroll_view); + removablesLocality=new ArrayList<>(); setSlidingUpPanelLayout(Constant.SLIDING_LAYOUT); if (slidingPaneLayout!=null) { slidingPaneLayout.setScrollableView(nestedScrollView); @@ -484,7 +488,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. latLng.setLatitude(Double.parseDouble(y)); latLng.setLongitude(Double.parseDouble(x)); BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.datouzhen); - markerStation = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor)); + markerStation = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor).anchor(0.5f,1.0f)); markerStation.setZIndex(4); moveLatlng(latLng,null); } @@ -591,6 +595,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. @Override public void run() { chargingPileAdapter.setChargingPileEntities(chargingPileList); + initPileMarkerShow(); } }); @@ -701,9 +706,41 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. latLng = (LatLng) data.obj; } else if (data.what == Constant.CHARGING_PILE_STATION) { // 新增充电桩 ChargingPileEntity chargingPileEntity = (ChargingPileEntity) data.obj; - ArrayList chargingPileEntities = new ArrayList<>(); - chargingPileEntities.add(chargingPileEntity); - chargingPileAdapter.setChargingPileEntities(chargingPileEntities); + List currentChargingPileList = chargingPileAdapter.getChargingPileEntities(); + m: if (currentChargingPileList!=null&&!currentChargingPileList.isEmpty()) { + for (int i = 0; i < currentChargingPileList.size(); i++) { + if (currentChargingPileList.get(i).getPileId() == chargingPileEntity.getPileId()) { + currentChargingPileList.add(i, chargingPileEntity); + currentChargingPileList.remove(i+1); + break m; + } + } + currentChargingPileList.add(chargingPileEntity); + } else { + currentChargingPileList.add(chargingPileEntity); + } + chargingPileAdapter.notifyDataSetChanged(); + }else if (data.what==Constant.PILE_MARKER_SHOW){ + initPileMarkerShow(); + } + } + public void initPileMarkerShow(){ + for (int i = 0; i < removablesLocality.size(); i++) { + removablesLocality.get(i).remove(); + } + removablesLocality.clear(); + List chargingPileEntities = chargingPileAdapter.getChargingPileEntities(); + for (int i = 0; i < chargingPileEntities.size(); i++) { + BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_chang_pile); + String p = chargingPileEntities.get(i).getP(); + if (p != null) { + // 解密geo + String decodeGeometry = Geohash.getInstance().decode(p); + LatLng latLngPile = GeometryTools.createLatLng(decodeGeometry); + Marker markerPile = tencentMap.addMarker(new MarkerOptions(latLngPile).icon(pileDescriptor).anchor(0.5f,1.0f)); + markerPile.setZIndex(3); + removablesLocality.add(markerPile); + } } } @@ -1445,6 +1482,10 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. if (markerStation!=null){ markerStation.remove(); } + for (int i = 0; i < removablesLocality.size(); i++) { + removablesLocality.get(i).remove(); + } + removablesLocality.clear(); } @Override @@ -1547,6 +1588,11 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. poiCheckResult.setMsg("请确定 点位"); return poiCheckResult; } + if (contactView.getPhoneList()!=-1){ + poiCheckResult.setCode(1); + poiCheckResult.setMsg("您第"+contactView.getPhoneList()+"手机号输入有误"); + return poiCheckResult; + } if (entity.getTelPhone()==null){ poiCheckResult.setCode(1); poiCheckResult.setMsg("请输入 手机号"); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java index 086e7f9..5fa2091 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java @@ -56,7 +56,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi private FilterAdapter filterAdapter; private ArrayList poiEntities; private List allPoi; - private int page; @@ -266,7 +265,6 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi if (slidingPaneLayout!=null) { slidingPaneLayout.setScrollableView(recyclerFilter); } - //设置下划线 recyclerFilter.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerFilter.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); @@ -278,39 +276,49 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi recyclerFilter.setLoadingMoreEnabled(false); filterAdapter = new FilterAdapter(getContext(), poiEntities); recyclerFilter.setAdapter(filterAdapter); + recyclerFilter.setScrollAlphaChangeListener(new XRecyclerView.ScrollAlphaChangeListener() { + @Override + public void onAlphaChange(int alpha) { + + } + + @Override + public int setLimitHeight() { + return 0; + } + }); + recyclerFilter.getDefaultFootView().setNoMoreHint("成功加载完毕"); recyclerFilter.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { - page=1; - Message obtain = Message.obtain(); - obtain.what = Constant.Filter_WhAT_RECYCLER; - obtain.obj = true; - EventBus.getDefault().post(obtain); + } @Override public void onLoadMore() { - Message obtain = Message.obtain(); - obtain.what = Constant.Filter_WhAT_RECYCLER; - obtain.obj = false; - EventBus.getDefault().post(obtain); + } }); filterAdapter.setItemCLick(new FilterAdapter.ItemCLick() { @Override - public void item(PoiEntity poiEntity, boolean aBoolean) { - if (aBoolean) {//本地 + public void item(PoiEntity poiEntity) { + if (poiEntity.getTaskStatus()!=1) { Message obtain = Message.obtain(); obtain.what = Constant.GATHER_GET; obtain.obj = poiEntity; EventBus.getDefault().post(obtain); - } else {//服务 + } else {//1:表示領取的本地認爲 Message obtain = Message.obtain(); - obtain.what = Constant.FILTER_LIST_ITEM; - obtain.obj = poiEntity; + obtain.what = Constant.TREASURE_FRAGMENT; + obtain.obj = true; EventBus.getDefault().post(obtain); + Message obtains = Message.obtain(); + obtains.what = Constant.FILTER_LIST_ITEM; + obtains.obj = poiEntity; + EventBus.getDefault().post(obtains); + } } }); @@ -326,6 +334,10 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi obtain.what = Constant.TREASURE_FRAGMENT; obtain.obj = true; EventBus.getDefault().post(obtain); + Message obtains = Message.obtain(); + obtains.what = Constant.JOB_WORD_MONITOR; + obtains.obj = true; + EventBus.getDefault().post(obtains); onBackPressed(); break; case R.id.cl_number: diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java index 318305f..612232c 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -364,7 +364,9 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe InsertAndUpdateUtils.getInstance().insertOrUpdateChargingPile(getActivity(), chargingPileEntityList); } // senMessageMarker(chargingStationEntity.getType(), chargingStationEntity.getY(), chargingStationEntity.getX()); - InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), chargingStationEntity); + if (statusId==1){ + InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), chargingStationEntity); + } getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -375,6 +377,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = chargingStationEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } else { @@ -388,6 +394,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = taskIdPoiEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } @@ -692,8 +702,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe poiListEntity.setX(latPolygon.get(0).longitude + ""); poiListEntity.setY(latPolygon.get(0).latitude + ""); } - // senMessageMarker(poiEntity.getType(), poiEntity.getY(), poiEntity.getX()); - InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity); + //senMessageMarker(poiEntity.getType(), poiEntity.getY(), poiEntity.getX()); + if (statusId==1){ + InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity); + } getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -704,6 +716,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = poiListEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } else { @@ -717,6 +733,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = taskIdPoiEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } @@ -805,7 +825,9 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe poiListEntity.setY(latPolygon.get(0).latitude + ""); } //senMessageMarker(poiEntity.getType(), poiEntity.getY(), poiEntity.getX()); - InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity); + if (statusId==1){ + InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiListEntity); + } getActivity().runOnUiThread(new Runnable() { @Override public void run() { @@ -816,6 +838,10 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = poiListEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } else { @@ -829,14 +855,16 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe obtain.obj = taskIdPoiEntity; EventBus.getDefault().post(obtain); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); } } }).start(); } - - } else { Toast.makeText(getContext(), "" + response.getMessage(), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java index 0391ef2..64a07aa 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -316,7 +316,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis latLng.setLongitude(Double.parseDouble(x)); latLng.setLatitude(Double.parseDouble(y)); BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.datouzhen); - markerOther = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor)); + markerOther = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor) .anchor(0.5f,1.0f)); markerOther.setZIndex(4); moveLatlng(latLng, null); } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index 5438d6e..172bfe6 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -385,7 +385,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe (y)); latLng.setLongitude(Double.parseDouble(x)); BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.datouzhen); - markerPoi = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor)); + markerPoi = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor) .anchor(0.5f,1.0f)); markerPoi.setZIndex(4); moveLatlng(latLng, null); } @@ -1073,7 +1073,6 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe if (phoneBean) { String list = contactView.getList(); poiEntity.setTelPhone(list); - } String tagPanorama = (String) tvPanorama.getTag(); if (tagPanorama != null && !tagPanorama.equals("")) { @@ -1131,6 +1130,11 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe poiCheckResult.setMsg("请确定 点位"); return poiCheckResult; } + if (contactView.getPhoneList()!=-1){ + poiCheckResult.setCode(1); + poiCheckResult.setMsg("您第"+contactView.getPhoneList()+"手机号输入有误"); + return poiCheckResult; + } if (entity.getTelPhone() == null) { poiCheckResult.setCode(1); poiCheckResult.setMsg("请输入 手机号"); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java index 1fa1947..7193f58 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -233,8 +233,8 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick latLng = new LatLng(); latLng.setLongitude(Double.parseDouble(x)); latLng.setLatitude(Double.parseDouble(y)); - BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.datouzhen); - markerPoiVideo = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor)); + BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.poi_video_bag); + markerPoiVideo = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor) .anchor(0.5f,1.0f)); markerPoiVideo.setZIndex(4); moveLatlng(latLng,null); } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java index 267e81e..fc5ce63 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -240,7 +240,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList latLng.setLongitude(Double.parseDouble(x)); latLng.setLatitude(Double.parseDouble(y)); BitmapDescriptor pileDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_road_bag); - markerRoad = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor)); + markerRoad = tencentMap.addMarker(new MarkerOptions(latLng).icon(pileDescriptor).anchor(0.5f,1.0f)); markerRoad.setZIndex(4); moveLatlng(latLng,null); } 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 ec96f89..09c0bff 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -234,9 +234,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen iniUserLocation(); //检查是否有没有填完的页面 initSharePre(); - removables = new ArrayList<>();//存储网络数据的marker - removablesLocality = new ArrayList<>(); //存储本地数据的marker - removableScreenMarker = new ArrayList<>();//存储点击屏幕上的marker数据的marker + removables = new ArrayList<>();//存储网络数据的marker数据(线,面,点) + removablesLocality = new ArrayList<>(); //存储本地的marker数据(线,面,点) + removableScreenMarker = new ArrayList<>();//存储点击屏幕上的marker的marker数据(线,面,点) tencentMap.addOnMapLoadedCallback(new TencentMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { @@ -262,96 +262,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } else { dismissLoadingDialog(); } - tencentMap.setOnMarkerClickListener(new TencentMap.OnMarkerClickListener() { - @Override - public boolean onMarkerClick(Marker marker) { - if (marker.getTitle() != null && !marker.getTitle().equals("")) {//是本地数据直接跳转到采集页面 - frameLayout.setVisibility(View.GONE); - if (gatherGetFragment != null) { - fragmentTransaction.remove(gatherGetFragment); - } - if (markerPoi != null) { - markerPoi.remove(); - } - if (bigMarker != null) { - bigMarker.setVisible(false); - } - for (int i = 0; i < removableScreenMarker.size(); i++) { - removableScreenMarker.get(i).remove(); - } - removableScreenMarker.clear(); - PoiEntity poiEntity = (PoiEntity) marker.getTag(); - Bundle bundle = new Bundle(); - bundle.putSerializable("poiEntity", poiEntity); - - switch (poiEntity.getType()) { - case 1: - // initMarker(poiEntity,false); - PoiFragment poiFragment = PoiFragment.newInstance(bundle); - showSlidingFragment(poiFragment); - break; - case 2: - // initMarker(poiEntity,false); - ChargingStationFragment chargingStationFragment = ChargingStationFragment.newInstance(bundle); - showSlidingFragment(chargingStationFragment); - break; - case 3: - // initMarker(poiEntity,false); - PoiVideoFragment poiVideoFragment = PoiVideoFragment.newInstance(bundle); - showSlidingFragment(poiVideoFragment); - break; - case 4: - // initMarker(poiEntity,false); - RoadFragment roadFragment = RoadFragment.newInstance(bundle); - showSlidingFragment(roadFragment); - break; - case 5: - // initMarker(poiEntity,false); - OtherFragment otherFragment = OtherFragment.newInstance(bundle); - showSlidingFragment(otherFragment); - 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(Integer.valueOf(listBean.getType())); - String geo = listBean.getGeo(); - poiListEntity.setGeoWkt(geo); - Geometry geometry = GeometryTools.createGeometry(geo); - if (geometry.getGeometryType().equals("Point")) {//点 - LatLng latLng = GeometryTools.createLatLng(geo); - poiListEntity.setX(latLng.longitude + ""); - poiListEntity.setY(latLng.latitude + ""); - } else if (geometry.getGeometryType().equals("LineString")) {//线 - List latLineString = GeometryTools.getLatLngs(geo); - poiListEntity.setX(latLineString.get(0).longitude + ""); - poiListEntity.setY(latLineString.get(0).latitude + ""); - } else if (geometry.getGeometryType().equals("Polygon")) {//面 - List latPolygon = GeometryTools.getLatLngs(geo); - poiListEntity.setX(latPolygon.get(0).longitude + ""); - poiListEntity.setY(latPolygon.get(0).latitude + ""); - } - initMarker(poiListEntity, true); - } else { - Toast.makeText(getActivity(), "数据为空", Toast.LENGTH_SHORT).show(); - } - } - return false; - } - }); + Constant.markerClickListener=markerClickListener; + tencentMap.setOnMarkerClickListener(Constant.markerClickListener); } }); // 设置地图宽高为屏幕的宽高 @@ -461,160 +373,170 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen @Override public void onSuccess(JobSearchBean response, int id) { dismissLoadingDialog(); - JobSearchBean.BodyBean body = response.getBody(); - upload = response.getBody().getUpload(); + if (response.getCode()==200){ + JobSearchBean.BodyBean body = response.getBody(); + upload = response.getBody().getUpload(); - if (body != null) { - if (upload != null) { - ivSubmit.setEnabled(true); - } else { - ivSubmit.setEnabled(false); - } - Log.d("TAG", "onSuccess: " + response.getBody().toString() + "sssssssssssss"); - for (int i = 0; i < removables.size(); i++) { - removables.get(i).remove(); - } - removables.clear(); - List 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); - listBean.setGeo(geo); - Log.d("TAG", "onSuccess: " + geo); - Geometry geometry = GeometryTools.createGeometry(geo); - LatLng latLng = null; - if (geometry.getGeometryType().equals("Point")) {//点 - latLng = GeometryTools.createLatLng(geo); - } else if (geometry.getGeometryType().equals("LineString")) {//线 - BitmapDescriptor bitmapLine = null; - if (Integer.valueOf(listBean.getType()) == 3) {//poi录像 - bitmapLine = BitmapDescriptorFactory.fromResource(R.drawable.poi_video_arrows); - } else if (Integer.valueOf(listBean.getType()) == 4) {//道路录像 - bitmapLine = BitmapDescriptorFactory.fromResource(R.drawable.road_arrows); - } - List latLineString = GeometryTools.getLatLngs(geo); - // 构造 PolylineOpitons - PolylineOptions polylineOptions = new PolylineOptions() - .addAll(latLineString) - // 折线设置圆形线头 - .lineCap(true) - // 折线的颜色为绿色 - .color(0xff00ff00) - // 折线宽度为5像素 - .width(10) - .arrow(true) - .arrowSpacing(100) - .arrowTexture(bitmapLine); - // 还可以添加描边颜色 - //.borderColor(0xffff0000) - // 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth` - //.borderWidth(1); - // 绘制折线 - Polyline polyline = tencentMap.addPolyline(polylineOptions); - polyline.setZIndex(MARKER_LINE); - removables.add(polyline); - if (latLineString != null && latLineString.size() > 0) { - latLng = latLineString.get(0); - } - } else if (geometry.getGeometryType().equals("Polygon")) {//面 - List latPolygon = GeometryTools.getLatLngs(geo); - Polygon polygon = tencentMap.addPolygon(new PolygonOptions(). - //连接封闭图形的点 - addAll(latPolygon). - //填充颜色为红色 - fillColor(Color.parseColor("#97E0E7EC")). - //边线颜色为黑色 - strokeColor(0xff000000). - //边线宽度15像素 - strokeWidth(5)); - polygon.setZIndex(MARKER_FACE); - removables.add(polygon); - com.vividsolutions.jts.geom.Point centroid = geometry.getCentroid(); - double x = centroid.getX(); - double y = centroid.getY(); - if (centroid != null) { - latLng = new LatLng(); - latLng.setLatitude(y); - latLng.setLongitude(x); - } + if (body != null) { + if (upload != null) { + ivSubmit.setEnabled(true); + } else { + ivSubmit.setEnabled(false); + } + Log.d("TAG", "onSuccess: " + response.getBody().toString() + "sssssssssssss"); + for (int i = 0; i < removables.size(); i++) { + removables.get(i).remove(); + } + removables.clear(); + List 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); + listBean.setGeo(geo); + Log.d("TAG", "onSuccess: " + geo); + Geometry geometry = GeometryTools.createGeometry(geo); + LatLng latLng = null; + if (geometry.getGeometryType().equals("Point")) {//点 + latLng = GeometryTools.createLatLng(geo); + } else if (geometry.getGeometryType().equals("LineString")) {//线 + BitmapDescriptor bitmapLine = null; + if (Integer.valueOf(listBean.getType()) == 3) {//poi录像 + bitmapLine = BitmapDescriptorFactory.fromResource(R.drawable.poi_video_arrows); + } else if (Integer.valueOf(listBean.getType()) == 4) {//道路录像 + bitmapLine = BitmapDescriptorFactory.fromResource(R.drawable.road_arrows); + } + List latLineString = GeometryTools.getLatLngs(geo); + // 构造 PolylineOpitons + PolylineOptions polylineOptions = new PolylineOptions() + .addAll(latLineString) + // 折线设置圆形线头 + .lineCap(true) + // 折线的颜色为绿色 + .color(0xff00ff00) + // 折线宽度为5像素 + .width(10) + .arrow(true) + .arrowSpacing(100) + .arrowTexture(bitmapLine); + // 还可以添加描边颜色 + //.borderColor(0xffff0000) + // 描边颜色的宽度,线宽还是 25 像素,不过填充的部分宽度为 `width` - 2 * `borderWidth` + //.borderWidth(1); + // 绘制折线 + Polyline polyline = tencentMap.addPolyline(polylineOptions); + polyline.setZIndex(MARKER_LINE); + removables.add(polyline); + if (latLineString != null && latLineString.size() > 0) { + latLng = latLineString.get(0); + } + } else if (geometry.getGeometryType().equals("Polygon")) {//面 + List latPolygon = GeometryTools.getLatLngs(geo); + Polygon polygon = tencentMap.addPolygon(new PolygonOptions(). + //连接封闭图形的点 + addAll(latPolygon). + //填充颜色为红色 + fillColor(Color.parseColor("#97E0E7EC")). + //边线颜色为黑色 + strokeColor(0xff000000). + //边线宽度15像素 + strokeWidth(5)); + polygon.setZIndex(MARKER_FACE); + removables.add(polygon); + com.vividsolutions.jts.geom.Point centroid = geometry.getCentroid(); + double x = centroid.getX(); + double y = centroid.getY(); + if (centroid != null) { + latLng = new LatLng(); + latLng.setLatitude(y); + latLng.setLongitude(x); + } /* if (latPolygon != null && latPolygon.size() > 0) { latLng = latPolygon.get(0); }*/ - } - switch (Integer.valueOf(list.get(i).getType())) { - case 1://poi - BitmapDescriptor poiDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_bg1); - poiDescriptor.getFormater().setScale(50); - Marker poiMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(poiDescriptor) - .anchor(0.5f,1f) - .flat(true) - .clockwise(false)); - poiMarker.setZIndex(MARKER_DOT); - poiMarker.setTag(listBean); - removables.add(poiMarker); - poiMarker.setClickable(true); - break; - case 2://充电站 - BitmapDescriptor chargeDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_bg1); - Marker stationMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(chargeDescriptor) - .flat(true) - .clockwise(false)); - stationMarker.setZIndex(MARKER_DOT); - stationMarker.setTag(listBean); - removables.add(stationMarker); - stationMarker.setClickable(true); + } + switch (Integer.valueOf(list.get(i).getType())) { + case 1://poi + BitmapDescriptor poiDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_bg1); + poiDescriptor.getFormater().setScale(50); + Marker poiMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(poiDescriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + poiMarker.setZIndex(MARKER_DOT); + poiMarker.setTag(listBean); + removables.add(poiMarker); + poiMarker.setClickable(true); + break; + case 2://充电站 + BitmapDescriptor chargeDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_charge_bg1); + Marker stationMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(chargeDescriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + stationMarker.setZIndex(MARKER_DOT); + stationMarker.setTag(listBean); + removables.add(stationMarker); + stationMarker.setClickable(true); - break; - case 3://poi录像 - BitmapDescriptor poiVideoDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_video_bg1); - Marker poiVideoMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(poiVideoDescriptor) - .flat(true) - .clockwise(false)); - poiVideoMarker.setTag(listBean); - poiVideoMarker.setZIndex(MARKER_DOT); - removables.add(poiVideoMarker); - poiVideoMarker.setClickable(true); - break; - case 4://道路录像 - BitmapDescriptor roadDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_road_bg); - Marker roadMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(roadDescriptor) - .flat(true) - .clockwise(false)); - roadMarker.setZIndex(MARKER_DOT); - roadMarker.setTag(listBean); - removables.add(roadMarker); - roadMarker.setClickable(true); + break; + case 3://poi录像 + BitmapDescriptor poiVideoDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_poi_video_bg1); + Marker poiVideoMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(poiVideoDescriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + poiVideoMarker.setTag(listBean); + poiVideoMarker.setZIndex(MARKER_DOT); + removables.add(poiVideoMarker); + poiVideoMarker.setClickable(true); + break; + case 4://道路录像 + BitmapDescriptor roadDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_road_bg); + Marker roadMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(roadDescriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + roadMarker.setZIndex(MARKER_DOT); + roadMarker.setTag(listBean); + removables.add(roadMarker); + roadMarker.setClickable(true); - break; - case 5://其他 - BitmapDescriptor otherDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_other_bg1); - Marker otherMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(otherDescriptor) - .flat(true) - .clockwise(false)); - otherMarker.setZIndex(MARKER_DOT); - otherMarker.setTag(listBean); - removables.add(otherMarker); - otherMarker.setClickable(true); - break; - case 6://面状任务 - BitmapDescriptor Descriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_facet_bg1); - Marker planarMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(Descriptor) - .flat(true) - .clockwise(false)); - planarMarker.setZIndex(MARKER_DOT); - planarMarker.setTag(listBean); - removables.add(planarMarker); - planarMarker.setClickable(true); - break; + break; + case 5://其他 + BitmapDescriptor otherDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_other_bg1); + Marker otherMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(otherDescriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + otherMarker.setZIndex(MARKER_DOT); + otherMarker.setTag(listBean); + removables.add(otherMarker); + otherMarker.setClickable(true); + break; + case 6://面状任务 + BitmapDescriptor Descriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_facet_bg1); + Marker planarMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(Descriptor).alpha(0.9f) + .anchor(0.5f,1.0f) + .flat(true) + .clockwise(false)); + planarMarker.setZIndex(MARKER_DOT); + planarMarker.setTag(listBean); + removables.add(planarMarker); + planarMarker.setClickable(true); + break; + } } } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_SEARCH_WORD; + obtain.obj = response; + EventBus.getDefault().post(obtain); + }else { + Toast.makeText(getActivity(), response.getMessage(), Toast.LENGTH_SHORT).show(); } - Message obtain = Message.obtain(); - obtain.what = Constant.JOB_SEARCH_WORD; - obtain.obj = response; - EventBus.getDefault().post(obtain); + } @Override @@ -627,13 +549,18 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } public void initMarker(PoiEntity poiEntity, boolean aBoolean) { + String geo = poiEntity.getGeoWkt(); + Log.d("TAG", "onSuccess: " + geo); + Geometry geometry = GeometryTools.createGeometry(geo); + if (geometry == null) { + return; + } + for (int i = 0; i < removableScreenMarker.size(); i++) { removableScreenMarker.get(i).remove(); } removableScreenMarker.clear(); - String geo = poiEntity.getGeoWkt(); - Log.d("TAG", "onSuccess: " + geo); - Geometry geometry = GeometryTools.createGeometry(geo); + LatLng latLng = null; if (geometry.getGeometryType().equals("Point")) {//点 latLng = GeometryTools.createLatLng(geo); @@ -708,6 +635,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } else if (poiEntity.getType() == 6) { descriptor = BitmapDescriptorFactory.fromResource(R.drawable.marker_facet_bag); } + MapManager.getInstance().moveLatlng(latLng,null); if (bigMarker == null) { bigMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(descriptor) .anchor(0.5f,1f) @@ -1048,23 +976,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen public void onEvent(Message data) { if (data.what == Constant.FILTER_LIST_ITEM) { // 点击筛选的item PoiEntity poiEntity = (PoiEntity) data.obj; - if (poiEntity.getX() != null && poiEntity.getY() != null) { - LatLng position = new LatLng(Double.valueOf(poiEntity.getY()), Double.valueOf(poiEntity.getX())); - CameraUpdateFactory.newCameraPosition(new CameraPosition( - position, //中心点坐标,地图目标经纬度 - tencentMap.getCameraPosition().zoom, //目标缩放级别 - tencentMap.getCameraPosition().tilt, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0) - tencentMap.getCameraPosition().bearing));//目标旋转角 0~360° (正北方为0) - } - sliding_layout.setPanelHeight(0); - sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); - frameLayout.setVisibility(View.VISIBLE); - fragmentTransaction = supportFragmentManager.beginTransaction(); - Bundle bundle = new Bundle(); - bundle.putSerializable("poiEntity", poiEntity); - gatherGetFragment = GatherGetFragment.newInstance(bundle); - fragmentTransaction.replace(R.id.frame_layout, gatherGetFragment); - fragmentTransaction.commit(); + initMarker(poiEntity,true); // 如果当前fragment是筛选,则移除该fragment FilterFragment filterFragment = (FilterFragment) supportFragmentManager.findFragmentByTag(FilterFragment.class.getName()); if (filterFragment != null) { @@ -1162,9 +1074,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen sliding_layout.setPanelHeight(0); setMainButtonVisiable(View.VISIBLE); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); - if (markerPoi != null) { - markerPoi.remove(); - } if (bigMarker != null) { bigMarker.setVisible(false); } @@ -1174,7 +1083,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen removableScreenMarker.clear(); } - } else if (data.what == Constant.MAIN_BUTTON_VISIABLE) {//控制主界面各个按钮显隐状态的what值 setMainButtonVisiable((Integer) data.obj); } else if (data.what == Constant.GATHER_GET_RETURN) {//item 点击页面的返回事件的处理 @@ -1194,6 +1102,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen removableScreenMarker.get(i).remove(); } removableScreenMarker.clear(); + } else if (data.what == Constant.CHARGING_STATION) {//充电站的充电桩-新增 if ((HashMap) data.obj != null) { HashMap stationHashMap = (HashMap) data.obj; @@ -1215,6 +1124,14 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen showSlidingFragment(chargingPileFragment); } else if (data.what == Constant.JOB_WORD_MONITOR) {//筛选条件界面的刷新 if ((boolean) data.obj) { + for (int i = 0; i < removables.size(); i++) { + removables.get(i).remove(); + } + removables.clear(); + for (int i = 0; i < removablesLocality.size(); i++) { + removablesLocality.get(i).remove(); + } + removablesLocality.clear(); refreshFilterData(); } } /*else if (data.what == Constant.EVENT_WHAT_CURRENT_MARKER) { @@ -1544,7 +1461,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } else if (item.getText().equals("其他")) { // showPoiMarkerByType(5, newPoiLatLng); OtherFragment otherFragment = OtherFragment.newInstance(bundle); - otherFragment.setSlidingUpPanelLayout(sliding_layout); showSlidingFragment(otherFragment); } return false; @@ -1672,6 +1588,103 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen }); } + TencentMap.OnMarkerClickListener markerClickListener=new TencentMap.OnMarkerClickListener() { + @Override + public boolean onMarkerClick(Marker marker) { + if (marker.getTitle() != null && !marker.getTitle().equals("")) {//是本地数据直接跳转到采集页面 + PoiEntity poiEntity = (PoiEntity) marker.getTag(); + frameLayout.setVisibility(View.GONE); + if (gatherGetFragment != null) { + fragmentTransaction.remove(gatherGetFragment); + } + if (markerPoi != null) { + markerPoi.remove(); + } + 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); + }else { + Bundle bundle = new Bundle(); + bundle.putSerializable("poiEntity", poiEntity); + switch (poiEntity.getType()) { + case 1: + initMarker(poiEntity,false); + PoiFragment poiFragment = PoiFragment.newInstance(bundle); + showSlidingFragment(poiFragment); + break; + case 2: + initMarker(poiEntity,false); + ChargingStationFragment chargingStationFragment = ChargingStationFragment.newInstance(bundle); + showSlidingFragment(chargingStationFragment); + break; + case 3: + initMarker(poiEntity,false); + PoiVideoFragment poiVideoFragment = PoiVideoFragment.newInstance(bundle); + showSlidingFragment(poiVideoFragment); + break; + case 4: + initMarker(poiEntity,false); + RoadFragment roadFragment = RoadFragment.newInstance(bundle); + showSlidingFragment(roadFragment); + break; + case 5: + initMarker(poiEntity,false); + OtherFragment otherFragment = OtherFragment.newInstance(bundle); + showSlidingFragment(otherFragment); + 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(Integer.valueOf(listBean.getType())); + String geo = listBean.getGeo(); + poiListEntity.setGeoWkt(geo); + Geometry geometry = GeometryTools.createGeometry(geo); + if (geometry.getGeometryType().equals("Point")) {//点 + LatLng latLng = GeometryTools.createLatLng(geo); + poiListEntity.setX(latLng.longitude + ""); + poiListEntity.setY(latLng.latitude + ""); + } else if (geometry.getGeometryType().equals("LineString")) {//线 + List latLineString = GeometryTools.getLatLngs(geo); + poiListEntity.setX(latLineString.get(0).longitude + ""); + poiListEntity.setY(latLineString.get(0).latitude + ""); + } else if (geometry.getGeometryType().equals("Polygon")) {//面 + List latPolygon = GeometryTools.getLatLngs(geo); + poiListEntity.setX(latPolygon.get(0).longitude + ""); + poiListEntity.setY(latPolygon.get(0).latitude + ""); + } + initMarker(poiListEntity, true); + } else { + Toast.makeText(getActivity(), "数据为空", Toast.LENGTH_SHORT).show(); + } + } + return false; + } + }; + @Override public boolean onBackPressed() { diff --git a/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java b/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java index 7bb7da4..f99e7f5 100644 --- a/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java +++ b/app/src/main/java/com/navinfo/outdoor/ui/view/ContactView.java @@ -162,7 +162,11 @@ public class ContactView { View itemView = rootView.getChildAt(i); EditText editAreaCode = itemView.findViewById(R.id.edit_area_code); EditText editPhoneNumber = itemView.findViewById(R.id.edit_phone_number); - poiBeans.add(new PhoneBean(null, editPhoneNumber.getText().toString().trim(), editAreaCode.getText().toString().trim(), 0)); + String areaCode = ""; + if (editAreaCode.isShown()) { + areaCode = editAreaCode.getText().toString().trim(); + } + poiBeans.add(new PhoneBean(null, editPhoneNumber.getText().toString().trim(), areaCode, 0)); } } return poiBeans; @@ -177,12 +181,12 @@ public class ContactView { List list = getPoiBeanListByRootView(); for (int i = 0; i < list.size(); i++) { PhoneBean poiBean = list.get(i); - if (poiBean.getPhone().indexOf('1') == 0) { + if (poiBean.getPhone().startsWith("1")) { if (poiBean.getPhone().length()!=11){ return false; } } else { - if (poiBean.getArea().length()+poiBean.getPhone().length()==11){ + if (poiBean.getArea().length()+poiBean.getPhone().length()<10 || poiBean.getArea().length()+poiBean.getPhone().length()>12||poiBean.getArea().length()<2){ return false; } } @@ -191,6 +195,28 @@ public class ContactView { return true; } + /** + * 检验数据 + * + * @return + */ + public int getPhoneList() { + List list = getPoiBeanListByRootView(); + for (int i = 0; i < list.size(); i++) { + PhoneBean poiBean = list.get(i); + if (poiBean.getPhone().startsWith("1")) { + if (poiBean.getPhone().length()!=11){ + return i+1; + } + } else { + if (poiBean.getArea().length()+poiBean.getPhone().length()<10 || poiBean.getArea().length()+poiBean.getPhone().length()>12||poiBean.getArea().length()<2){ + return i+1; + } + } + + } + return -1; + } /** * 整理数据 * @@ -198,34 +224,21 @@ public class ContactView { */ public String getList() { List list = getPoiBeanListByRootView(); - String a = ""; + StringBuffer phoneSb = new StringBuffer(""); for (int i = 0; i < list.size(); i++) { PhoneBean poiBean = list.get(i); - if (list.size() == 1) { - if (poiBean.getPhone().indexOf('1') == 0) { - a = poiBean.getPhone(); - } else { - a = poiBean.getArea() + "-" + poiBean.getPhone(); - } + if (poiBean.getPhone().startsWith("1")) { + phoneSb.append(poiBean.getPhone()); } else { - if (i == list.size() - 1) { - if (poiBean.getPhone().indexOf('1') == 0) { - a += poiBean.getPhone(); - } else { - a += poiBean.getArea() + "-" + poiBean.getPhone(); - } - } else { - if (poiBean.getPhone().indexOf('1') == 0) { - a += poiBean.getPhone() + "|"; - } else { - a += poiBean.getArea() + "-" + poiBean.getPhone() + "|"; - } - } - + phoneSb.append(poiBean.getArea()).append("-").append(poiBean.getPhone()); } - + phoneSb.append("|"); } - return a; + String result = phoneSb.toString(); + if (result.length()>0&&result.endsWith("|")) { + result = result.substring(0, result.length()-1); + } + return result; } /** diff --git a/app/src/main/java/com/navinfo/outdoor/util/MapManager.java b/app/src/main/java/com/navinfo/outdoor/util/MapManager.java index 7a005f2..adc905c 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/MapManager.java +++ b/app/src/main/java/com/navinfo/outdoor/util/MapManager.java @@ -41,4 +41,12 @@ public class MapManager { tencentMap.animateCamera(cameraSigma); } } + public void moveLatlng(LatLng latLng, TencentMap.CancelableCallback cancelableCallback) { + CameraUpdate cameraSigma = CameraUpdateFactory.newCameraPosition(new CameraPosition( + latLng, //中心点坐标,地图目标经纬度 + tencentMap.getCameraPosition().zoom, //目标缩放级别 + tencentMap.getCameraPosition().tilt, //目标倾斜角[0.0 ~ 45.0] (垂直地图时为0) + tencentMap.getCameraPosition().bearing)); //目标旋转角 0~360° (正北方为0) + tencentMap.animateCamera(cameraSigma, cancelableCallback); + } } diff --git a/app/src/main/res/drawable-hdpi/circle.png b/app/src/main/res/drawable-hdpi/circle.png new file mode 100644 index 0000000..60e3ae2 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/circle.png differ diff --git a/app/src/main/res/drawable-hdpi/marker_chang_pile.png b/app/src/main/res/drawable-hdpi/marker_chang_pile.png new file mode 100644 index 0000000..f6b32f7 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/marker_chang_pile.png differ