You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SDK 4(Navigate Edition)中添加带文本的场景POI标记?

最优实现方式:自定义带文本的MapMarker

在HERE SDK 4 (Navigate Edition) 中确实没有直接替代MapLabeledMarker的API,最优实现方式是通过**自定义带文本的图标结合MapMarker**来实现类似内置POI的带文本标记,具体步骤如下:

1. 生成包含文本的自定义Bitmap

通过Canvas手动绘制标记图标(模拟内置POI样式),并在图标上叠加文本。示例代码(Android端):

// 创建Bitmap画布
int width = 120;
int height = 140;
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);

// 绘制POI标记背景(圆形示例)
Paint bgPaint = new Paint();
bgPaint.setColor(Color.parseColor("#2196F3"));
canvas.drawCircle(width/2, height/2 - 20, 30, bgPaint);

// 绘制文本
Paint textPaint = new Paint();
textPaint.setColor(Color.WHITE);
textPaint.setTextSize(24);
textPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("餐厅", width/2, height/2 + 30, textPaint);

2. 将Bitmap转为MapImage

把生成的Bitmap转换为HERE SDK可识别的MapImage:

MapImage mapImage = new MapImageFactory().fromBitmap(bitmap);

3. 创建并添加MapMarker

基于目标地理坐标创建MapMarker,并设置自定义的MapImage:

GeoCoordinates poiCoordinates = new GeoCoordinates(52.530932, 13.384915);
MapMarker mapMarker = new MapMarker(poiCoordinates, mapImage);
mapView.getMapScene().addMapMarker(mapMarker);

额外优化建议

  • 如果需要大量带文本的标记,建议提前缓存生成好的MapImage,避免重复绘制Bitmap影响性能
  • 若文本需要动态更新,可以监听文本变化事件,重新生成Bitmap并替换MapMarker的MapImage

内容的提问来源于stack exchange,提问作者Teriblus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:19:00