Android Studio中HERE MAP SDK绘制MapPolyline报错求助
解决MapPolyline构造方法参数不匹配问题
错误提示明确说明:MapPolyline的构造方法仅接受GeoPolyline和MapPolylineStyle两个参数,但你直接传入了GeoPolyline、线宽(float)、颜色(Color)三个参数,导致参数不匹配。
解决步骤:
- 新增
MapPolylineStyle类的导入,这个类负责封装线的样式属性 - 先通过
MapPolylineStyle将线宽和颜色封装为样式对象,再传入MapPolyline的构造方法
修改后的完整代码:
import com.here.sdk.core.GeoCoordinates; import com.here.sdk.core.GeoPolyline; import com.here.sdk.core.Color; import com.here.sdk.core.errors.InstantiationErrorException; import com.here.sdk.mapviewlite.MapPolyline; import com.here.sdk.mapviewlite.MapPolylineStyle; // 新增样式类导入 ArrayList<GeoCoordinates> coordinates = new ArrayList<>(); coordinates.add(new GeoCoordinates(52.53032, 13.37409)); coordinates.add(new GeoCoordinates(52.5309, 13.3946)); coordinates.add(new GeoCoordinates(52.53894, 13.39194)); coordinates.add(new GeoCoordinates(52.54014, 13.37958)); GeoPolyline geoPolyline; try { geoPolyline = new GeoPolyline(coordinates); } catch (InstantiationErrorException e) { geoPolyline = null; } // 增加空判断,避免geoPolyline为null时触发空指针异常 if (geoPolyline != null) { float widthInPixels = 20; Color lineColor = new Color((short) 0x00, (short) 0x90, (short) 0x8A, (short) 0xA0); // 创建线样式对象,封装线宽和颜色 MapPolylineStyle polylineStyle = new MapPolylineStyle(widthInPixels, lineColor); // 传入GeoPolyline和样式对象创建MapPolyline MapPolyline mapPolyline = new MapPolyline(geoPolyline, polylineStyle); }
额外说明:
- HERE SDK的MapViewLite版本要求通过
MapPolylineStyle统一管理线的样式属性,不能直接将线宽、颜色作为独立参数传入构造方法 - 新增的空判断可以避免
InstantiationErrorException抛出后,geoPolyline为null导致的后续空指针问题
内容的提问来源于stack exchange,提问作者Sampanna Pathak
相关产品推荐
相关产品推荐

