Android百度地图测距功能

在这里插入图片描述
临近春节假期,业务开发进入收尾。空闲时间做的技术储备: 百度地图测距

为什么做这个技术储备,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值