从 Android OS 获取位置触发器
Getting location trigger from Android OS
如果用户进入预定义区域(给 OS 的 Lat 长列表),是否有办法从 Android OS 获取触发器?例如如果我将特定餐厅的经纬度提供给 OS,有没有一种方法 OS 可以在用户进入餐厅时向我发送触发器?
谢谢
我已经开发了一个包含大量地理编码的应用程序。
我的方法是测量当前位置(lat,lon)和目标位置之间的距离。
如果将其放入(后台)任务中,它可以解决您的问题。
我认为命名空间 android.location 中的 LocationManager 和 LocationListener class 足以让它进行跟踪。
如果没有计算这些坐标之间距离的方法,您可以使用此代码:
public static class Distance
{
// cos(d) = sin(φА)·sin(φB) + cos(φА)·cos(φB)·cos(λА − λB),
// where φА, φB are latitudes and λА, λB are longitudes
// Distance = d * R
public static double DistanceBetweenPlaces(double lon1, double lat1, double lon2, double lat2)
{
double R = 6371; // km
double sLat1 = Math.Sin(Radians(lat1));
double sLat2 = Math.Sin(Radians(lat2));
double cLat1 = Math.Cos(Radians(lat1));
double cLat2 = Math.Cos(Radians(lat2));
double cLon = Math.Cos(Radians(lon1) - Radians(lon2));
double cosD = sLat1 * sLat2 + cLat1 * cLat2 * cLon;
double d = Math.Acos(cosD);
double dist = R * d;
return dist;
}
public static double Radians(double x)
{
return x * PIx / 180;
}
const double PIx = Math.PI;
const double RADIO = 6378.16;
}
祝你好运!
马可
您的描述表明您需要地理围栏。它允许您在用户进入某个接近度时被触发。
您可以参考here,它提供了满足您要求的教程。
如果用户进入预定义区域(给 OS 的 Lat 长列表),是否有办法从 Android OS 获取触发器?例如如果我将特定餐厅的经纬度提供给 OS,有没有一种方法 OS 可以在用户进入餐厅时向我发送触发器?
谢谢
我已经开发了一个包含大量地理编码的应用程序。
我的方法是测量当前位置(lat,lon)和目标位置之间的距离。
如果将其放入(后台)任务中,它可以解决您的问题。
我认为命名空间 android.location 中的 LocationManager 和 LocationListener class 足以让它进行跟踪。
如果没有计算这些坐标之间距离的方法,您可以使用此代码:
public static class Distance
{
// cos(d) = sin(φА)·sin(φB) + cos(φА)·cos(φB)·cos(λА − λB),
// where φА, φB are latitudes and λА, λB are longitudes
// Distance = d * R
public static double DistanceBetweenPlaces(double lon1, double lat1, double lon2, double lat2)
{
double R = 6371; // km
double sLat1 = Math.Sin(Radians(lat1));
double sLat2 = Math.Sin(Radians(lat2));
double cLat1 = Math.Cos(Radians(lat1));
double cLat2 = Math.Cos(Radians(lat2));
double cLon = Math.Cos(Radians(lon1) - Radians(lon2));
double cosD = sLat1 * sLat2 + cLat1 * cLat2 * cLon;
double d = Math.Acos(cosD);
double dist = R * d;
return dist;
}
public static double Radians(double x)
{
return x * PIx / 180;
}
const double PIx = Math.PI;
const double RADIO = 6378.16;
}
祝你好运! 马可
您的描述表明您需要地理围栏。它允许您在用户进入某个接近度时被触发。
您可以参考here,它提供了满足您要求的教程。