临近春节假期,业务开发进入收尾。空闲时间做的技术储备: 百度地图测距
为什么做这个技术储备,1 年尾有时间 2 我们现有的地图业务基于百度地图 3 这个功能竞品某壳等没有但是很实用
个人在看房时候经常需要这个功能发现各大房产 APP 没有上这个功能,需要自己切到百度地图再去找这个工具功能,这个功能成本不高一天时间实现了百度地图同样功能的 95% 功能。
先上图:
购房首要因素之一查询配套离自己小区离自己所处的楼栋多远:
场景一: 楼栋到地铁的距离
场景二: 楼栋到学校的距离
场景三: 咨询师、经纪人给客户介绍本案的时候,让客户自己操作得出来的距离远比听解说介绍来得更有认同感
Dependency
app/libs/BaiduLBS_Android.jar
app/libs/armeabi/libBaiduMapSDK_base_v6_1_0.so
app/libs/armeabi/libBaiduMapSDK_map_v6_1_0.so
//TODO 点击地铁图标无效
素材来源: 阿里巴巴矢量图库
核心代码实现:
//点击地图监听
mBaiduMap.setOnMapClickListener(this);
@Override
public void onMapClick(LatLng latLng) {
Log.e(TAG, "onMapClick LatLng: " + latLng.toString());
if (!ruleMode) {
return;
}
pointList.add(drawPoint(latLng));
if (pointList.size() > 1) {
MarkerOptions lastPoint = pointList.get(pointList.size() - 1);
lineList.add(drawLine(pointList.get(pointList.size() - 2).getPosition(), lastPoint.getPosition()));
PolylineOptions polylineOptions = lineList.get(lineList.size() - 1);
Bundle bundle = polylineOptions.getExtraInfo();
Double d = bundle.getDouble("m");
sum += d;
DistanceView distanceView = new DistanceView(this);
distanceView.setDistance(sum);
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(distanceView);
MarkerOptions markerOptions = new MarkerOptions().position(lastPoint.getPosition()).icon(bitmapDescriptor);
markerOptions.yOffset(40);
mBaiduMap.addOverlay(markerOptions);
}
}
private MarkerOptions drawPoint(LatLng point) {
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.ic_point);
MarkerOptions option = new MarkerOptions()
.position(point)
.anchor(0.5f, 0.5f)
.icon(bitmap);
mBaiduMap.addOverlay(option);
return option;
}
private PolylineOptions drawLine(LatLng start, LatLng end) {
List<LatLng> line = new ArrayList<>();
line.add(start);
line.add(end);
PolylineOptions polylineOptions = new PolylineOptions()
.width(4)
.color(Color.parseColor("#1296db"))
.points(line);
mBaiduMap.addOverlay(polylineOptions);
Bundle bundle = new Bundle();
bundle.putDouble("m", DistanceUtil.getDistance(start, end));
polylineOptions.extraInfo(bundle);
return polylineOptions;
}
GitHub源码: https://github.com/13120241790/BaiduMapSample