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

Google Places API获取地点类型名称异常:返回数字而非文本

解决Google Places API返回类型数字而非文本名称的问题

嘿,我懂你遇到的这个问题!你现在拿到的[69, 1013, 34]这些数字其实是Google Places API定义的地点类型枚举常量,而不是你想要的可读性强的文本名称(比如park、square)。下面给你两种实用的解决思路:

方法一:利用Google Places SDK的内置转换方法(推荐,适用于Android)

如果你是在Android平台上使用Places SDK,其实有现成的方法可以把数字类型码转成文本名称,还支持本地化。直接调用PlaceTypes.getName()方法就行:

// 假设你已经拿到了types列表
List<Integer> types = placeLikelihood.getPlace().getPlaceTypes();
List<String> typeNames = new ArrayList<>();

for (Integer typeCode : types) {
    // 传入上下文和类型码,就能拿到对应的文本名称
    String typeName = PlaceTypes.getName(context, typeCode);
    typeNames.add(typeName);
}

// 现在typeNames里就是你想要的"park"、"square"这类文本啦

方法二:手动创建映射表

如果没法用内置方法,你可以自己创建一个映射关系,把数字和对应的文本名称对应起来。首先需要查Google Places API文档找到每个数字对应的类型名称(比如69对应park,34对应square,1013对应natural_feature),然后用HashMap来实现:

// 先创建类型码和名称的映射
HashMap<Integer, String> typeCodeToName = new HashMap<>();
typeCodeToName.put(69, "park");
typeCodeToName.put(34, "square");
typeCodeToName.put(1013, "natural_feature");
// 可以根据需求添加更多类型映射

// 转换类型列表
List<Integer> types = placeLikelihood.getPlace().getPlaceTypes();
List<String> typeNames = new ArrayList<>();

for (Integer typeCode : types) {
    // 用getOrDefault避免找不到对应值时返回null
    String typeName = typeCodeToName.getOrDefault(typeCode, "unknown");
    typeNames.add(typeName);
}

小提示:你可以在Google Places API的官方文档里找到所有地点类型的枚举值和对应名称的对照表,方便你补充完整映射关系。

内容的提问来源于stack exchange,提问作者Gastón Saillán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:24:42