在 OpenHarmony 中,如果你使用的是 地图能力(如 @ohos.map / 第三方地图 SDK / ArkUI 地图组件),自定义标记(Marker / Pin)通常可以通过 添加自定义图标、视图或覆盖物 来实现。下面以 OpenHarmony 官方地图能力(Map Kit / ArkUI Map) 和 常见自定义方式 为例说明。
import map from '@ohos.map';
let markerOptions: map.MarkerOptions = {
position: {
latitude: 39.9,
longitude: 116.4
},
title: "自定义标记",
snippet: "这是描述"
};
mapController.addMarker(markerOptions);
let markerOptions: map.MarkerOptions = {
position: {
latitude: 39.9,
longitude: 116.4
},
icon: $r('app.media.custom_marker'), // resources/base/media
anchorX: 0.5,
anchorY: 1.0
};
✅ 支持:
$r('app.media.xxx')如果系统 Marker 不满足需求(如带文字、按钮、动画):
// 在地图上层叠加 ArkUI 组件
Stack() {
MapComponent()
CustomMarker({
x: screenX,
y: screenY
})
}
@Component
struct CustomMarker {
build() {
Column() {
Text("店铺")
.fontSize(12)
.backgroundColor('#FFFFFF')
.padding(4)
Image($r('app.media.pin'))
}
}
}
✅ 优点:
❌ 缺点:
marker.setTitle("新标题");
marker.setIcon($r('app.media.new_icon'));
或移除:
mapController.removeMarker(marker);
marker.setOnClickListener(() => {
console.info("Marker clicked");
});
| 地图方案 | 自定义能力 |
|---|---|
| OpenHarmony Map Kit | ✅ 图标 / 标题 |
| 第三方地图 SDK | ✅ 强(HTML/原生) |
| ArkUI 自绘地图 | ✅ 完全自由 |
✅ 简单需求:
使用
Marker + icon
✅ 复杂 UI(气泡、评分、按钮):
Overlay + ArkUI Component
✅ 高性能多标记:
使用聚合(Cluster)
如果你能告诉我:
我可以给你 可直接运行的示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。