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

使用CloudRail设置category属性时触发Unknown category错误求助

解决CloudRail中getNearbyPOIs的Unknown Category错误

你的问题核心是传入的category值不符合CloudRail库对Google Places(以及其他同类服务)的参数要求,从而触发了IllegalArgumentError。下面一步步分析并解决问题:

1. 问题根源:Category参数需要用预定义枚举值

CloudRail的getNearbyPOIs方法对categories参数有严格要求——必须传入对应服务类下的预定义枚举常量,而不是自定义的字符串(比如你用的'restaurant'就不属于合法取值)。

以Google Places为例,你需要使用\CloudRail\Service\GooglePlaces\Category类下的常量,常见的有效值包括:

  • \CloudRail\Service\GooglePlaces\Category::RESTAURANT
  • \CloudRail\Service\GooglePlaces\Category::CAFE
  • \CloudRail\Service\GooglePlaces\Category::BAR

同理,Foursquare、Yelp等服务也有各自对应的Category枚举类,比如\CloudRail\Service\Foursquare\Category。

2. 修改代码的具体方案

把你传入的['restaurant']替换成对应的枚举常量数组,修改后的调用代码如下:

// 先引入Google Places的Category类
use CloudRail\Service\GooglePlaces\Category;

$cr_service = load_cloudrail_service('GooglePlaces'); 
// 使用枚举常量作为category参数
$retrievedPOIs = $cr_service->getNearbyPOIs(50.45594, 30.465612, 40000, '', [Category::RESTAURANT]);

如果切换到其他服务(比如Foursquare),只需替换对应的Category类即可:

use CloudRail\Service\Foursquare\Category;

$retrievedPOIs = $cr_service->getNearbyPOIs(50.45594, 30.465612, 40000, '', [Category::FOOD]);

3. 额外验证:参数顺序是否正确

再确认下getNearbyPOIs的参数顺序是否匹配CloudRail的方法定义:
该方法标准参数顺序为:
getNearbyPOIs(float $latitude, float $longitude, int $radius, string $language, array $categories)

你的代码里第四个参数传空字符串(语言参数)、第五个传categories,这个顺序是正确的,所以无需调整。

为什么不设置category时正常?

当categories参数为空(或不传)时,CloudRail会跳过类别校验,直接返回所有类型的POI,因此不会触发非法参数错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:53:59