diff --git a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java index 1cd960d..60f188c 100644 --- a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java @@ -120,8 +120,8 @@ * 72.004 <= lng <= 137.8347 and 0.8293 <= lat <= 55.8271 */ private static boolean isOutOfChina(double lng, double lat) { - if (lng < 72.004 || lng > 137.8347) { - return lat < 0.8293 || lat > 55.8271; + if (lng >= 72.004 && lng <= 137.8347) { + return lat >= 0.8293 && lat <= 55.8271; } return false; } diff --git a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java index 1cd960d..60f188c 100644 --- a/app/src/main/java/com/casic/dcms/utils/LocationHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/LocationHelper.java @@ -120,8 +120,8 @@ * 72.004 <= lng <= 137.8347 and 0.8293 <= lat <= 55.8271 */ private static boolean isOutOfChina(double lng, double lat) { - if (lng < 72.004 || lng > 137.8347) { - return lat < 0.8293 || lat > 55.8271; + if (lng >= 72.004 && lng <= 137.8347) { + return lat >= 0.8293 && lat <= 55.8271; } return false; } diff --git a/app/src/main/java/com/casic/dcms/view/map/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/view/map/ArcGISMapActivity.java index 2fead07..c8e8abe 100644 --- a/app/src/main/java/com/casic/dcms/view/map/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/view/map/ArcGISMapActivity.java @@ -14,6 +14,7 @@ import com.amap.api.location.AMapLocation; import com.casic.dcms.R; import com.casic.dcms.databinding.ActivityGisBinding; +import com.casic.dcms.model.CommunityEnevlopBean; import com.casic.dcms.model.PointFutureBean; import com.casic.dcms.model.ShopFeatureBean; import com.casic.dcms.utils.ArcGisMapCreator; @@ -28,6 +29,7 @@ import com.esri.arcgisruntime.data.Feature; import com.esri.arcgisruntime.data.QueryParameters; import com.esri.arcgisruntime.data.ServiceFeatureTable; +import com.esri.arcgisruntime.geometry.Envelope; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.FeatureLayer; @@ -35,6 +37,7 @@ import com.esri.arcgisruntime.mapping.Basemap; import com.esri.arcgisruntime.mapping.BasemapStyle; import com.esri.arcgisruntime.mapping.GeoElement; +import com.esri.arcgisruntime.mapping.Viewpoint; import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; import com.esri.arcgisruntime.mapping.view.Graphic; import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; @@ -46,6 +49,7 @@ import com.google.gson.reflect.TypeToken; import com.gyf.immersionbar.ImmersionBar; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; import com.pengxh.androidx.lite.widget.dialog.AlertControlDialog; @@ -57,6 +61,7 @@ import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -76,6 +81,10 @@ private ListenableList overlayGraphics; private ListenableList graphicsOverlays; private GraphicsOverlay mGraphicsOverlay; + private final List maxLat = new ArrayList<>(); + private final List minLat = new ArrayList<>(); + private final List maxLng = new ArrayList<>(); + private final List minLng = new ArrayList<>(); @Override protected void setupTopBarLayout() { @@ -103,40 +112,42 @@ arcGISMap.setBasemap(basemap); viewBinding.mapView.setMap(arcGISMap); - //设置地图显示的区域 -// String community = StringHelper.getUserBean().getCommunity(); -// String assetsData = StringHelper.getAssetsData(getAssets(), "enevlop.json"); -// Type type = new TypeToken>() { -// }.getType(); -// List enevlopBeans = gson.fromJson(assetsData, type); -// if (enevlopBeans != null) { -// Envelope initialExtent = null; -// for (CommunityEnevlopBean bean : enevlopBeans) { -// if (bean.getCommunity().equals(community)) { -// CommunityEnevlopBean.EnevlopBean enevlop = bean.getEnevlop(); -// initialExtent = new Envelope( -// enevlop.getX_min(), enevlop.getY_min(), -// enevlop.getX_max(), enevlop.getY_max(), -// SpatialReference.create(4326) -// ); -// break; -// } -// } -// if (initialExtent != null) { -// Viewpoint viewpoint = new Viewpoint(initialExtent); -// mapView.setViewpoint(viewpoint); -// } -// } + //获取崇仁范围边界 + String assetsData = ContextHub.readAssetsFile(context, "enevlop.json"); + Type type = new TypeToken>() { + }.getType(); + List enevlopBeans = gson.fromJson(assetsData, type); + for (CommunityEnevlopBean bean : enevlopBeans) { + maxLat.add(bean.getEnevlop().getX_max()); + minLat.add(bean.getEnevlop().getX_min()); + maxLng.add(bean.getEnevlop().getY_max()); + minLng.add(bean.getEnevlop().getY_min()); + } //设置定位点 LocationHelper.obtainCurrentLocation(this, new ILocationListener() { - @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), SpatialReferences.getWgs84()); - addPictureMarker(point); - viewBinding.mapView.setViewpointCenterAsync(point, 2800); + /** + * x_min : 116.04140203446151 + * y_min : 27.753370580776277 + * x_max : 116.05680864304304 + * y_max : 27.753712385601723 + */ + if (aMapLocation.getAddress().contains("崇仁")) { + //设置地图显示的区域 + Envelope initialExtent = new Envelope( + new Point(Collections.min(minLng), Collections.min(minLat), SpatialReferences.getWgs84()), + new Point(Collections.max(maxLng), Collections.max(maxLat), SpatialReferences.getWgs84()) + ); + Viewpoint viewpoint = new Viewpoint(initialExtent); + viewBinding.mapView.setViewpoint(viewpoint); + } else { + Point point = new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), SpatialReferences.getWgs84()); + addPictureMarker(point); + viewBinding.mapView.setViewpointCenterAsync(point, 2800); + } } } }, true);