Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Hmos Map Kit Map Type

ASecurity

切换地图显示类型,支持标准地图、空地图、地形图、卫星图、混合地图五种类型,可在初始化或运行时动态切换,适用于导航、地理信息展示、卫星图像查看场景

2 stars
0 votes
0 copies
0 views
Added 9/22/2026
developmenttypescriptgitapi

Works with

api

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add IsKenKenYa/skills --skill hmos-map-kit-map-type --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hmos Map Kit Map Type?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Hmos Map Kit Map Type
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iskenkenya-hmos-map-kit-map-type/badge)](https://www.skillsdirectory.com/skills/iskenkenya-hmos-map-kit-map-type)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SUB_SKILL.md
---
name: hmos-map-kit-map-type
description: 切换地图显示类型,支持标准地图、空地图、地形图、卫星图、混合地图五种类型,可在初始化或运行时动态切换,适用于导航、地理信息展示、卫星图像查看场景
---

# 切换地图类型技能

## 功能描述

本技能实现HarmonyOS Map Kit地图类型切换功能。支持五种地图类型:标准地图(STANDARD)、空地图(NONE)、地形图(TERRAIN)、卫星图(SATELLITE)、混合地图(HYBRID)。可通过两种方式设置地图类型:初始化时通过MapOptions配置,或运行时通过setMapType方法动态切换。地形图需在特定缩放层级(5-14)才能显示效果,卫星图和混合地图从API 6.0.0(20)开始支持。

## 使用场景

### 触发词
- "切换地图类型"
- "显示卫星图"
- "显示地形图"
- "设置标准地图"
- "切换混合地图"
- "map type"
- "卫星地图"
- "地形地图"

### 能做
- 初始化时设置地图类型
- 运行时动态切换地图类型
- 查询当前地图类型
- 支持五种地图类型切换:标准、空、地形、卫星、混合

### 绝不做
- 不支持地形图在智能表设备上显示效果
- 不支持卫星图和混合地图在API版本低于6.0.0(20)的环境
- 不支持地形图在缩放层级不在5-14范围时显示效果

### 补充
- 地形图仅在缩放层级大于5且小于14时才能看到效果
- 卫星图和混合地图从API 6.0.0(20)版本开始支持
- 卫星图只支持中国区域
- 地形图在智能表设备上不显示效果

## 调用规范和规则

### 输入约束
- 地图类型参数必须为mapCommon.MapType枚举值之一
- 缩放层级设置:地形图建议设置在5-14之间
- API版本要求:基本功能需4.1.0(11)以上,卫星图和混合地图需6.0.0(20)以上

### 执行约束
- setMapType方法调用为同步执行,无返回值
- 地图类型切换立即生效
- 不支持动画过渡效果

### 内容约束
- 禁止使用非法的MapType值
- 禁止在API版本不支持的情况下使用卫星图和混合地图
- 禁止在智能表设备上期望地形图显示效果

### 降级约束
- API版本低于6.0.0(20)时,不支持SATELLITE和HYBRID类型,降级使用STANDARD类型
- 地形图在缩放层级不在5-14范围时,无法看到地形效果,但仍会切换为TERRAIN类型
- 智能表设备上地形图不显示效果时,建议使用STANDARD或SATELLITE类型

## 调用流程和步骤

### 步骤1:准备阶段

**前置校验**:
1. 检查API版本是否支持所需的地图类型
2. 确认设备类型(是否为智能表设备)
3. 验证地图控制器是否已初始化

**参数准备**:
```typescript
import { mapCommon } from '@kit.MapKit';

const mapType: mapCommon.MapType = mapCommon.MapType.STANDARD;
```

### 步骤2:初始化时设置地图类型

**方式一:通过MapOptions初始化**

```typescript
import { mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';

@Entry
@Component
struct MapTypeDemo {
  private mapOptions?: mapCommon.MapOptions;
  private callback?: AsyncCallback<map.MapComponentController>;
  private mapController?: map.MapComponentController;

  aboutToAppear(): void {
    this.mapOptions = {
      position: {
        target: {
          latitude: 31.984410259206815,
          longitude: 118.76625379397866
        },
        zoom: 15
      },
      mapType: mapCommon.MapType.STANDARD
    };

    this.callback = async (err, mapController) => {
      if (!err) {
        this.mapController = mapController;
        console.info('Map initialized with STANDARD type');
      }
    };
  }

  build() {
    Stack() {
      MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback })
        .width('100%')
        .height('100%')
    }.height('100%')
  }
}
```

### 步骤3:运行时动态切换地图类型

**方式二:通过setMapType方法**

```typescript
async function switchMapType(mapController: map.MapComponentController, targetType: mapCommon.MapType): void {
  try {
    if (!mapController) {
      console.error('Map controller is not initialized');
      return;
    }

    mapController.setMapType(targetType);
    
    const currentType = mapController.getMapType();
    console.info(`Map type switched to: ${currentType}`);
  } catch (error) {
    console.error('Failed to switch map type:', error);
  }
}

async function setTerrainMap(mapController: map.MapComponentController): void {
  const currentZoom = mapController.getCameraPosition().zoom;
  
  if (currentZoom >= 5 && currentZoom <= 14) {
    mapController.setMapType(mapCommon.MapType.TERRAIN);
    console.info('Terrain map enabled at optimal zoom level');
  } else {
    console.warn('Terrain map requires zoom level between 5 and 14 for best visibility');
    mapController.setMapType(mapCommon.MapType.TERRAIN);
  }
}
```

### 步骤4:错误处理

```typescript
function handleMapTypeSwitch(mapController: map.MapComponentController, mapType: mapCommon.MapType): void {
  try {
    if (!mapController) {
      throw new Error('MapController is null or undefined');
    }

    const supportedTypes = [
      mapCommon.MapType.STANDARD,
      mapCommon.MapType.NONE,
      mapCommon.MapType.TERRAIN
    ];

    if (mapType === mapCommon.MapType.SATELLITE || mapType === mapCommon.MapType.HYBRID) {
      console.warn('SATELLITE and HYBRID types require API 6.0.0(20) or higher');
    }

    mapController.setMapType(mapType);
    console.info('Map type set successfully');
  } catch (error) {
    console.error('Error setting map type:', error.message);
  }
}
```

### 步骤5:降级处理

```typescript
function safeSetMapType(mapController: map.MapComponentController, desiredType: mapCommon.MapType): void {
  const fallbackType = mapCommon.MapType.STANDARD;
  
  try {
    if (desiredType === mapCommon.MapType.SATELLITE || desiredType === mapCommon.MapType.HYBRID) {
      console.warn('Satellite/Hybrid map requires API 6.0.0(20)+, using STANDARD as fallback');
      mapController.setMapType(fallbackType);
    } else {
      mapController.setMapType(desiredType);
    }
  } catch (error) {
    console.error('Failed to set map type, using fallback:', error);
    mapController.setMapType(fallbackType);
  }
}
```

## 错误码说明

| 错误码 | 说明 | 解决方法 |
|-------|------|---------|
| 401 | Invalid input parameter | 检查MapType参数是否为有效的枚举值 |
| API_VERSION_ERROR | API版本不支持该地图类型 | 升级API版本至6.0.0(20)以上以支持卫星图和混合地图 |
| DEVICE_NOT_SUPPORTED | 设备不支持此地图类型显示效果 | 智能表设备不支持地形图效果,建议使用其他地图类型 |
| ZOOM_LEVEL_WARNING | 缩放层级不在最佳范围 | 调整缩放层级至5-14之间以获得最佳地形图效果 |

## 编译和修复问题

### 依赖声明
```json
{
  "dependencies": {
    "@kit.MapKit": ">=4.1.0(11)"
  }
}
```

### 环境要求
- HarmonyOS API:最低版本4.1.0(11),卫星图和混合地图需6.0.0(20)
- 设备类型:全类型支持,智能表设备地形图不显示效果
- 开发环境:DevEco Studio 3.1及以上

### 常见编译问题

**问题1:MapType枚举值未定义**
```
Error: 'MapType' is not defined
```
**解决方法**:确保导入mapCommon模块:`import { mapCommon } from '@kit.MapKit';`

**问题2:setMapType方法不存在**
```
Error: Property 'setMapType' does not exist on type 'MapComponentController'
```
**解决方法**:确认API版本是否为5.0.0(12)以上,setMapType方法从此版本开始支持

**问题3:卫星图类型不支持**
```
Runtime Error: SATELLITE map type is not supported
```
**解决方法**:升级API版本至6.0.0(20)以上,或使用其他地图类型

## 常见问题与解决方法

### Q1:地形图显示不出来怎么办?
**原因**:缩放层级不在最佳范围(5-14),或设备为智能表
**解决方法**:
- 调整地图缩放层级至5-14之间
- 检查设备类型,智能表不支持地形图效果
- 使用其他地图类型替代

### Q2:切换到卫星图时报错?
**原因**:API版本低于6.0.0(20),卫星图和混合地图从此版本开始支持
**解决方法**:
- 升级HarmonyOS API版本至6.0.0(20)以上
- 使用标准地图或地形图作为替代方案

### Q3:如何判断当前地图类型?
**原因**:需要查询当前地图显示类型
**解决方法**:
- 使用getMapType()方法查询当前地图类型
- 确保API版本为5.0.0(12)以上

### Q4:切换地图类型后地图显示异常?
**原因**:地图类型参数错误或地图控制器未正确初始化
**解决方法**:
- 验证mapController是否已成功初始化
- 检查MapType参数是否为有效枚举值
- 确认相机位置和缩放层级设置合理

### Q5:如何在初始化时就设置卫星图?
**原因**:需要在创建地图时直接显示卫星图
**解决方法**:
- 在MapOptions中设置mapType属性为mapCommon.MapType.SATELLITE
- 确保API版本为6.0.0(20)以上
- 注意卫星图只支持中国区域

## 输出结果报告

执行完成后输出以下信息:

```json
{
  "status": "success",
  "mapType": "TERRAIN",
  "previousMapType": "STANDARD",
  "apiUsed": [
    "mapCommon.MapType",
    "MapOptions.mapType",
    "setMapType",
    "getMapType"
  ],
  "deviceSupport": "full",
  "zoomLevel": 10,
  "terrainOptimal": true
}
```

## 参考文档

- [API开发指南-切换地图类型](map-type)
- [API参考说明-mapCommon](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/map-common)
- [API参考说明-MapComponentController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/map-map-mapcomponentcontroller)

## 完整示例代码

- [ArkTS示例-初始化设置地图类型](assets/map_type_init_example.ets)
- [ArkTS示例-动态切换地图类型](assets/map_type_switch_example.ets)
- [ArkTS示例-地形图最佳实践](assets/terrain_map_example.ets)
- [配置文件示例](assets/map_config.json)

## 测试用例

### 正向测试用例
- [初始化设置标准地图](tests/test_standard_map_init.py):验证初始化时设置STANDARD类型成功
- [动态切换地形图](tests/test_terrain_switch.py):验证运行时切换为TERRAIN类型成功
- [查询地图类型](tests/test_get_map_type.py):验证getMapType方法正确返回当前类型

### 边界测试用例
- [地形图缩放层级边界](tests/test_terrain_zoom_boundary.py):验证地形图在缩放层级5和14边界时的显示
- [API版本兼容性](tests/test_api_version_compatibility.py):验证不同API版本下的地图类型支持情况

### 异常测试用例
- [无效地图类型参数](tests/test_invalid_map_type.py):验证传入非法MapType值的错误处理
- [空地图控制器](tests/test_null_controller.py):验证mapController为空时的错误处理
- [智能表设备地形图](tests/test_wearable_terrain.py):验证智能表设备上地形图的降级处理

Attribution

IsKenKenYaIsKenKenYa
View sourceMore from IsKenKenYa →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

284072 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2192 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →