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();
}