<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">使用MapView的方式</span>
一、引入布局文件
<com.amap.api.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
二、在Activity中的基本程序代码(高德官方demo)
public class BasicMapActivity extends Activity {
private MapView mapView;
private AMap aMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.basicmap_activity);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 必须要写
if (aMap == null) {
aMap = mapView.getMap();
}
}
/**
* 方法必须重写
*/
@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();
}
}
三、地图操作
1,改变可视区域 :使用CameraUpdate类
aMap.moveCamera(update);//为没有动画
aMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(Constants.ZHONGGUANCUN,18, 0, 30)),1000, callback);//第一个参数为CameraUpdate,一般使用CameraPosition生成好一些,第二个参数为动画时间,第三个参数为动画完成或取消监听接口
(CameraPostion创建:CameraPosition LUJIAZUI = new CameraPosition.Builder().target(Constants.SHANGHAI).zoom(18).bearing(0).tilt(30).build();
//target为LatLng位置,zoom为缩放级别,bearing为可视区域指向的方向,以角度为单位,正北方向为0度,tilt为目标可视区域的倾斜度,以角度为单位。)
2,放大缩小地图:还是使用CameraUpdate类
aMap.animateCamera(CameraUpdateFactory.zoomIn(),1000, callback);
aMap.animateCamera(CameraUpdateFactory.zoomOut(),1000, callback);
3,设置点击地图或移动回调监听接口
aMap.setOnMapClickListener(this);// 对amap添加单击地图事件监听器
aMap.setOnMapLongClickListener(this);// 对amap添加长按地图事件监听器
aMap.setOnCameraChangeListener(this);// 对amap添加移动地图事件监听器
4,设置地图模式:
aMap.setMapType(AMap.MAP_TYPE_NORMAL);// 矢量地图模式
5,显示交通状况:
aMap.setTrafficEnabled(false);// 显示实时交通状况
6,设置地图显示的相关属性
mUiSettings = aMap.getUiSettings();
mUiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);// 设置地图logo显示在左下方
mUiSettings.setZoomControlsEnabled(false); //是否显示缩放按钮
mUiSettings.setCompassEnabled(false); //是否显示指南针
mUiSettings.setMyLocationButtonEnabled(true); // 是否显示默认的定位按钮
(一般设置为true时,配套的设置有
aMap.setMyLocationEnabled(true);// 是否可触发定位并显示定位层
aMap.setLocationSource(this);// 设置定位监听
监听接口
@Override
public void activate(OnLocationChangedListener listener) {
mListener = listener;
if (mAMapLocationManager == null) {
mAMapLocationManager = LocationManagerProxy.getInstance(getActivity());
mAMapLocationManager.setGpsEnable(true);
mAMapLocationManager.requestLocationUpdates(LocationProviderProxy.AMapNetwork, 5000, 10, this);
}
}
@Override
public void deactivate() {
mListener = null;
if (mAMapLocationManager != null) {
mAMapLocationManager.removeUpdates(this);
}
mAMapLocationManager = null;
}
)
mUiSettings.setScrollGesturesEnabled(false);//是否允许滑动
mUiSettings.setZoomGesturesEnabled(true);//是否允许缩放手势
mUiSettings.setTiltGesturesEnabled(true);//是否允许倾斜手势
mUiSettings.setRotateGesturesEnabled(true);//是否允许旋转手势
7, Marker部分:
(1)
aMap.setOnMarkerDragListener(this);// 设置marker可拖拽事件监听器
aMap.setOnMapLoadedListener(this);// 设置amap加载成功事件监听器
aMap.setOnMarkerClickListener(this);// 设置点击marker事件监听器
aMap.setOnInfoWindowClickListener(this);// 设置点击infoWindow事件监听器
aMap.setInfoWindowAdapter(this);// 设置自定义InfoWindow样式,可以在监听接口中返回自己的view
(2)
MarkerOptions markerOptions=new MarkerOptions();
markerOptions.position(someLatlng);
markerOptions.title("someTitle");
markerOptions.snippet("SomeSnippet");
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.xx);
markerOptions..perspective(true).draggable(true);
Marker aMarker= aMap.addMarker(markerOptions);
//Marker是由aMap的addMarker时返回的,addMarker的参数是MarkerOptions,markerOptions可以设置position是指定位置,title和snippet是infowindow或infocontent中可以用到的title和snippet属性,icon一般是由BitmapDescriptorFactory.fromXXX系列工厂方法或BitmapDescriptorFactory.defaultMarker()方法获得,可以从view生成,但是view中的点击事件应该是不能执行,只能是地图点击事件,perspective是远小近大效果(2.1.0版本新增),draggable是是否可移动
aMarker.showInfoWindow();// 主动显示marker的infowinfow
(3)
aMap.clear();//清除地图上的所有Marker