private MapView mapView; private AMap aMap; private LatLng center = new LatLng(39.993167, 116.473274);// 中心点模拟经纬度 private ArrayList<Marker> mMarkers = new ArrayList<Marker>(); private Marker centerMarker; private View infoWindow = null;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ways_guide); mapView = findViewById(R.id.map); mapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mapView.getMap(); } aMap.getUiSettings().setMyLocationButtonEnabled(true); aMap.getUiSettings().setZoomControlsEnabled(false); aMap.getUiSettings().setLogoBottomMargin(-50);//隐藏logo aMap.moveCamera(CameraUpdateFactory.zoomTo(17)); for (int i = 0; i < getPointList().size(); i++) { getPointList().add(getPointList().get(i)); MarkerOptions mark = new MarkerOptions(); Marker marker = aMap.addMarker(new MarkerOptions().position(getPointList().get(i)) .icon(BitmapDescriptorFactory.fromResource(R.mipmap.b_poi_bg_focus))); marker.setObject(getPointList().size() - 1); mMarkers.add(marker); } initCenterMarker(); } private List<LatLng> getPointList() { List<LatLng> pointList = new ArrayList<LatLng>(); pointList.add(new LatLng(39.993755, 116.467987)); pointList.add(new LatLng(39.985589, 116.469306)); pointList.add(new LatLng(39.990946, 116.48439)); pointList.add(new LatLng(40.000466, 116.463384)); pointList.add(new LatLng(39.975426, 116.490079)); pointList.add(new LatLng(40.016392, 116.464343)); pointList.add(new LatLng(39.959215, 116.464882)); pointList.add(new LatLng(39.962136, 116.495418)); pointList.add(new LatLng(39.994012, 116.426363)); pointList.add(new LatLng(39.960666, 116.444798)); pointList.add(new LatLng(39.972976, 116.424517)); pointList.add(new LatLng(39.951329, 116.455913)); return pointList; } /** * 地图单击回调 * * @param latLng 单击点经纬度 */ @Override public void onMapClick(LatLng latLng) { //单击添加marker } /** * 地图加载完成回调 */ @Override public void onMapLoaded() { } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } //初始化中心点Marker private void initCenterMarker() { centerMarker = aMap.addMarker(new MarkerOptions() .anchor(0.5f, 0.5f) .icon(BitmapDescriptorFactory .fromResource(R.mipmap.pakage_point)) .position(new LatLng(39.980666, 116.474798))); centerMarker.startAnimation(); centerMarker.showInfoWindow(); LatLngBounds bounds = getLatLngBounds(new LatLng(39.980666, 116.474798), getPointList()); aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50)); } //根据中心点和自定义内容获取缩放bounds private LatLngBounds getLatLngBounds(LatLng centerpoint, List<LatLng> pointList) { LatLngBounds.Builder b = LatLngBounds.builder(); if (centerpoint != null){ for (int i = 0; i < pointList.size(); i++) { LatLng p = pointList.get(i); LatLng p1 = new LatLng((centerpoint.latitude * 2) - p.latitude, (centerpoint.longitude * 2) - p.longitude); b.include(p); b.include(p1); } } return b.build(); }