百度地图路径规划:BDMapSDKException: marker‘s icon can not be null

项目场景:

通过Android Studio调用百度地图SDK,进行两点之间路径规划,或者进行导航、POI检索。


问题描述

图中可以看出是icon为空导致bug
点击Overlay.java:num,定位到 .icon()

                if (step.getEntrance() != null) {
                    overlayList.add((new MarkerOptions())
                            .position(step.getEntrance().getLocation())
                                    .rotate((360 - step.getDirection()))
                                            .zIndex(10)
                                                    .anchor(0.5f, 0.5f)
                                                            .extraInfo(b)
                                                                    .icon(BitmapDescriptorFactory
                                                                            .fromAssetWithDpi("Icon_line_node.png")));
                }

点击OverlayManager.java:72,定位到以下代码:

List<OverlayOptions> overlayOptions = getOverlayOptions();

验证了上面的Overlay类在覆写此方法时出现的错误

因此点击 BikingRouteSearchDemo.java:270 时定位到的代码是

  overlay.addToMap();

因为overlay在实例化时调用getOverlayOptions(); 时出错,所以此处无法进行 .add() 方法。


解决方案:

根本原因在于overlay类覆写getOverlayOptions()时出错,没有找到icon等相关资源,因此解决好icon的资源即可。
具体解决方案为:在app/scr/main下添加包含icon图片资源的assets文件,如图所示:
在这里插入图片描述具体的assert文件可以从百度地图提供的Demo中拷贝。