高德地图开发总结

今天为止,为期两天的高德地图开发算是基本结束。由于这是一个综合了各类技术的功能点。在开发的时候学到了不少,于是决定写写这篇文档,总结同时也为以后开发留一份记录。

首先是功能选取。
开始后的时候是使用了猎鹰API,但后来和组长讨论发现,这个API不符合场景,所以最后就当了解猎鹰API的使用方法。最终放弃了猎鹰API的接入。

接下来,开始参考淘宝接入高德地图,在百度搜索后使用了AppBarLayout、CollapsingToolbarLayout和NestedScrollView来开发。但是随之引入问题:

1、Toolbar突然之间失效;
2、Toolbar标题不居中。

这两个问题中,第一个问题特别好解决,只要定义Behavior即可。但是第二个问题直接卡了一天,一阵百度也是没有头绪,最好的效果仍然偏移几个dp单位的距离。回到家以后,自己找了一个声称能解决这个问题的界面文件进行测试,最后发现应该是CollapsingToolbarLayout的问题。这应该是引入CollapsingToolbarLayout本身的解析出现异常。于是只能自己实现一个Toolbar。最终仍然发现,Toolbar大概向左偏移了15dp的距离。仔细核对晚上的写的demo,并打开开发者选项的布局界面进行仔细分析以后,在Toolbar内设置了一下属性:

app:contentInsetStart="0dp"

最后解决了这个偏移问题。

但是图标却不是很满意,不符合其他页面的退出按钮。最后去查看Toolbar源码,所以决定使用ImageButton来解决这个问题。代码如下:


解决完这个问题以后,开始接入高德地图。

高德地图自定义导航路线的绘制需要使用DrivingRouteOverlay来定义会绘制。代码大致看得懂,这里主要讲难点。

难点在于自定义标记。

private BitmapDescriptor getThroughPointBitDes() {
	return BitmapDescriptorFactory.fromResource(R.drawable.driver_left);
}

@Override
public BitmapDescriptor getStartBitmapDescriptor(){
	View view = View.inflate(mContext, R.layout.amap_marker_view, null);
	TextView mTitle=view.findViewById(R.id.title);
	TextView mLocation=view.findViewById(R.id.location);
	mTitle.setText("发");
	mLocation.setText(startCityName);
	return BitmapDescriptorFactory.fromView(view);
}

@Override
public BitmapDescriptor getEndBitmapDescriptor(){
    View view = View.inflate(mContext, R.layout.amap_marker_view, null);
    TextView mTitle=view.findViewById(R.id.title);
    TextView mLocation=view.findViewById(R.id.location);
    mTitle.setText("收");
    mLocation.setText(endCityName);
    return BitmapDescriptorFactory.fromView(view);
}

以上代码分别定义了车辆当前位置,起始位置和终点位置。

起始点和终点位置不能使用定义一个自定义View来生成标记,必须通过上面的方法自己画一个Layout,然后通过上述方法加载才能成功显示出来。

你可能感兴趣的:(Android,SDK)