# 高德API错误码映射与异常处理
AMAP_ERROR_MAP = {
    '10001': '用户key不正确或过期',
    '10002': '请求服务不存在',
    '10003': '请求服务响应错误',
    '10004': '请求服务资源被禁止',
    '10005': '用户访问过于频繁',
    '10006': 'IP被禁止',
    '10007': '未知请求来源',
    '10008': 'MD5安全码未通过',
    '10009': '请求key与绑定平台不符',
    '10010': '用户签名未通过',
    '10011': '请求接口已废弃',
    '10012': '权限不足，服务请求被拒绝',
    '10013': '请求服务超限',
    '10014': '请求接口权限受限',
    '10015': '请求参数非法',
    '10016': '缺少必填参数',
    '10017': '请求服务结果为空',
    '10019': '请求过于频繁',
    '20000': '请求参数非法',
    '20001': '协议不存在',
    '20800': '批量请求个数超限',
    '30000': '请求服务响应错误',
    '30001': '请求服务无效',
    '30002': '服务端未知错误',
    '40000': '服务请求失败',
}

class AMapAPIError(Exception):
    pass

def handle_amap_error(data):
    code = data.get('infocode')
    msg = AMAP_ERROR_MAP.get(code, data.get('info', '未知错误'))
    raise AMapAPIError(f"高德API错误[{code}]: {msg}")
