防止以后不知道怎么使用,记录一下地图开发过程中的一些细节
一,地图的三种模式
3D地图SDK提供三种地图类型:MAP_TYPE_NORMAL 、 MAP_TYPE_SATELLITE 和 MAP_TYPE_NIGHT。
1. MAP_TYPE_NORMAL:标准地图。地图包含道路、建筑,以及重要的自然风光(如河流)等。道路和功能标签为可见。
2. MAP_TYPE_SATELLITE:卫星地图。3D地图道路和功能标签为可见的,2D地图道路和功能标签不可见。
3. MAP_TYPE_NIGHT:夜景地图(仅3D地图)。道路和功能标签可见。
a,矢量地图
aMap.setMapTextZIndex(AMap.MAP_TYPE_NORMAL);
b,夜景地图
aMap.setMapType(AMap.MAP_TYPE_NIGHT);
c,卫星地图
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
二:定位;高德地图有三种定位方式:定位模式,跟随模式,设置定位类型根据地图面方向旋转
/**
* 激活定位
*/
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener;
if (mAMapLocationManager == null) {
mAMapLocationManager = LocationManagerProxy.getInstance(this);
/*
* mAMapLocManager.setGpsEnable(false);
* 1.0.2版本新增方法,设置true表示混合定位中包含gps定位,false表示纯网络定位,默认是true Location
* API定位采用GPS和网络混合定位方式
* ,第一个参数是定位provider,第二个参数时间最短是2000毫秒,第三个参数距离间隔单位是米,第四个参数是定位监听者
*/
//此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
//注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
//在定位结束后,在合适的生命周期调用destroy()方法
//其中如果间隔时间为-1,则定位只定一次
mAMapLocationManager.requestLocationData(LocationProviderProxy.AMapNetwork, -1, 10, this);
}
}
/**
* 停止定位
*/
@Override
public void deactivate() {
mListener = null;
if (mAMapLocationManager != null) {
mAMapLocationManager.removeUpdates(this);
mAMapLocationManager.destroy();
}
mAMapLocationManager = null;
}
/**
* 定位成功后回调函数
*/
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (mListener != null && aMapLocation != null) {
mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点
}
}
三:设置比例尺
1,设置比例尺的缩放:
aMap.moveCamera(CameraUpdateFactory.zoomTo(30));
2,设置比例尺显示
mUiSettings.setScaleControlsEnabled(true);
四:Marker的使用;点击地图添加图片,需要实现OnMapCLickListener类的onMapClick()方法
如果需要改变标记图像,可以设置自定义的图像,通常被称为图标。自定义图标通常由 BitmapDescriptor 设置。可以在类 BitmapDescriptorFactory 使用以下其中一种方法定义。
1. fromAsset(String assetName) 在 assets 目录中使用图像创建自定义标记。
2. fromBitmap (Bitmap image) 使用位图图像创建自定义标记。
3. fromFile (String path) 指定路径的文件创建自定义图标。
4. fromResource (int resourceId) 使用已经存在的资源创建自定义图标。
@Override
public void onMapClick(LatLng latLng) {
MarkerOptions markerOptions = new MarkerOptions();
// 设置Marker的图标样式
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker));
// 设置Marker点击之后显示的标题
markerOptions.title("Marker");
// 设置Marker的坐标,为我们点击地图的经纬度坐标
markerOptions.position(latLng);
// 设置Marker的可见性
markerOptions.visible(true);
// 设置Marker是否可以被拖拽,这里先设置为false,之后会演示Marker的拖拽功能
markerOptions.draggable(false);
// 将Marker添加到地图上去
mAMap.addMarker(markerOptions);
}