例如,当我有一个十进制度为45.3911638的纬度并将其转换为微度为45391163时,我看到以下错误:
[CriterionError.INVALID_LATITUDE @ 操作[0] .operand.criterion.geoPoint.latitudeInMicroDegrees]
这是我的代码:
{
:operator => 'ADD',
:operand => {
:campaign_id => self[:campaign_id],
:criterion => {
:xsi_type => 'Proximity',
:geo_point => {
:latitude_in_micro_degrees => (shop[:lat] * 1_000_000).to_i,
:longitude_in_micro_degrees => (shop[:lng] * 1_000_000).to_i
},
:radius_distance_units => RADIUS_DISTANCE_UNITS,
:radius_in_units => radius
}
}
}
更新:我收到错误是因为我提交了
latitude_in_micro_degrees
两次;一次使用lat
值和a 第二次使用lng
值。原来的问题,是 “预计具有什么确切的格式latitudeInMicroDegrees和 在为邻近度创建geoPoint时,longitudeInMicroDegrees CampaignCriterion?“仍然站立并且没有记录AFAIK,但是 代码(如上所述)确实有效,我现在可以回答我的问题 自己的问题。
答案 0 :(得分:1)
Google的文档仅说明:
<强>的xsd:INT 强>
纬度的微度。
此字段是必填字段,不应为 null 。
但是,事实证明,一个微程度是一度的百万分之一。因此,假设您的纬度和经度值是十进制度数(https://en.wikipedia.org/wiki/Decimal_degrees),则乘以1,000,000并舍入到最接近的整数值。重要的是有7位小数的精度,所以你可以舍入到6。