前提:
App需要展示行程路线,这里用的是高德地图的Api
绘制路线:
首先下载了官方提供的 AMap3DDemo ,运行后找到 case 多彩线绘制,仿照它基本上可以实现路线绘制。
绿色位置请忽略。
蓝色的线是绘制的轨迹线。
代码如下:
List<LatLng> latLngs = new ArrayList<>();
latLngs.add ... 添加坐标点
PolylineOptions options = new PolylineOptions();//配置
options.width(10);//设置宽度
options.addAll(latLngs);//坐标集合
options.colorValues(colorList);//加入对应的颜色,使用colorValues 即表示使用多颜色,使用color表示使用单色线
aMap.addPolyline(options);//显示轨迹
以上,轨迹就绘制完成了。
控制显示位置:
绘制完路线需要,移动显示位置至中心位置。
代码:
public static void zoomToSpan2(AMap aMap, List<LatLng> ts) {
LogUtils.i(TAG, "zoomToSpan");
try {
if (ts != null && ts.size() > 0) {
if (aMap == null) {
LogUtils.i(TAG, "aMap == null");
return;
}
if (ts.size() == 1) {
LogUtils.i(TAG, "naviLatLngList.size()==1");
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ts.get(0), 18f));
} else {
LatLngBounds.Builder b = LatLngBounds.builder();
for (int i = 0; i < ts.size(); i++) {
b.include(ts.get(i));
}
LatLngBounds bounds = b.build();
LogUtils.i(TAG, "bounds:" + bounds.toString());
aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 17));
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
解决滑动冲突:
代码:
mapView.setOnTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
nestedScroll.requestDisallowInterceptTouchEvent(false);
} else {
nestedScroll.requestDisallowInterceptTouchEvent(true);
}
return false;
}
禁用地图手势:
高德地图控件交互设置:包括缩放按钮、定位按钮、比例按钮、logo
简介:
缩放按钮
setZoomControlsEnabled(boolean b);
指南针
setCompassEnabled(boolean b);
定位按钮
aMap.setLocationSource(this);//通过aMap对象设置定位数据源的监听
mUiSettings.setMyLocationButtonEnabled(true); //显示默认的定位按钮
aMap.setMyLocationEnabled(true);// 可触发定位并显示当前位置
比例尺控件
setScaleControlsEnabled(boolean b);//控制比例尺控件是否显示
地图Logo
setLogoPosition(int position);//设置logo位置
简介:
缩放手势
UiSettings.setZoomGesturesEnabled(boolean)
滑动手势
UiSettings.setScrollGesturesEnabled(boolean)
旋转手势
UiSettings.setRotateGesturesEnabled(boolean)
倾斜手势
UiSettings.setTiltGesturesEnabled(boolean)
所有手势
UiSettings.setAllGesturesEnabled (boolean)
代码:
aMap.getUiSettings().setZoomControlsEnabled(false);
aMap.getUiSettings().setAllGesturesEnabled (false);
结束:
事实证明,下载demo非常有用~