PowerApps 循环中坐标之间的距离
PowerApps Distance Between Coordinates in a Loop
我是 PowerApps 新手。我有一个共享点列表,其中包含一组不同位置的坐标。我需要弄清楚的是,当使用 Haversine 公式的 phone 上的 PowerApps App 用户在这些坐标的一定距离内时。虽然 Haversine 公式使用硬编码目标位置以 test/simple 方式工作,但我需要共享点列表中的目标位置。这是我的代码,它在 Timer End 中:
ForAll(
irfan_yard_locations,
With(
{
r: 6371000, p: (Pi() / 180), latA: location_lat, lonA: location_long, latB: Location.Latitude, lonB: Location.Longitude
},
Round((2 * r) * Asin(Sqrt(0.5 - Cos((latA - latB) * p)/2 + Cos(latB * p) * Cos(latA * p) * (1 - Cos((lonA - lonB) * p)) / 2)), 2 ));
) ;
irfan_yard_locations
是具有 location_lat
和 location_long
坐标的 SP 列表。我在想这个示例站点中的类似内容:http://powerappsguide.com/blog/post/formula-how-to-use-the-if-and-switch-functions 这样如果 with ()
中的 return 小于 5(以米为单位),则导航到另一个屏幕或做某事。只是不知道语法。或者有更好的方法吗?
谢谢!
没关系。通过在 With
函数周围放置一个 If
子句,我能够捕捉到当前位置是否在其中一个坐标集的 6 米范围内。
ForAll(
irfan_yard_locations,
If ( With(
{
r: 6371000, p: (Pi() / 180), latA: location_lat, lonA: location_long, latB: Location.Latitude, lonB: Location.Longitude
},
Round((2 * r) * Asin(Sqrt(0.5 - Cos((latA - latB) * p)/2 + Cos(latB * p) * Cos(latA * p) * (1 - Cos((lonA - lonB) * p)) / 2)), 2 )) < 6, Navigate(Screen2));
) ;
我是 PowerApps 新手。我有一个共享点列表,其中包含一组不同位置的坐标。我需要弄清楚的是,当使用 Haversine 公式的 phone 上的 PowerApps App 用户在这些坐标的一定距离内时。虽然 Haversine 公式使用硬编码目标位置以 test/simple 方式工作,但我需要共享点列表中的目标位置。这是我的代码,它在 Timer End 中:
ForAll(
irfan_yard_locations,
With(
{
r: 6371000, p: (Pi() / 180), latA: location_lat, lonA: location_long, latB: Location.Latitude, lonB: Location.Longitude
},
Round((2 * r) * Asin(Sqrt(0.5 - Cos((latA - latB) * p)/2 + Cos(latB * p) * Cos(latA * p) * (1 - Cos((lonA - lonB) * p)) / 2)), 2 ));
) ;
irfan_yard_locations
是具有 location_lat
和 location_long
坐标的 SP 列表。我在想这个示例站点中的类似内容:http://powerappsguide.com/blog/post/formula-how-to-use-the-if-and-switch-functions 这样如果 with ()
中的 return 小于 5(以米为单位),则导航到另一个屏幕或做某事。只是不知道语法。或者有更好的方法吗?
谢谢!
没关系。通过在 With
函数周围放置一个 If
子句,我能够捕捉到当前位置是否在其中一个坐标集的 6 米范围内。
ForAll(
irfan_yard_locations,
If ( With(
{
r: 6371000, p: (Pi() / 180), latA: location_lat, lonA: location_long, latB: Location.Latitude, lonB: Location.Longitude
},
Round((2 * r) * Asin(Sqrt(0.5 - Cos((latA - latB) * p)/2 + Cos(latB * p) * Cos(latA * p) * (1 - Cos((lonA - lonB) * p)) / 2)), 2 )) < 6, Navigate(Screen2));
) ;