我正在尝试复制gps提醒应用。目前,用户可以通过地图选择一个点并将其设置为位置。然后添加一个范围。
当用户到达该范围时,警报必须振铃。
我目前的障碍是添加一个范围,比如1KM到用户设置的纬度和经度点,并得到一个新的纬度经度点。
是否有其他方法可以将用户当前位置与范围匹配?
我尝试了下面的公式。但我没有得到预期的结果。
答案 0 :(得分:0)
private class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
Location alarmLocation = new Location("Alarm");
alarmLocation.setLatitude(Double.valueOf(alarm_loc_latitude)); //here alarm_loc_latitude is the value of latitude of the location where alarm is going to ring
alarmLocation.setLongitude(Double.valueOf(alarm_loc_longitude)); // Same for alarm_loc_longitude
double distance = location.distanceTo(alarmLocation); // it will calculate the distance between your current location and the alarm location, in metres
if(distance<=1000){ // distance in metres
/* Enter your alarm ringing code here */
}
}
}
在您的活动中使用此位置监听器。这将在特定时间间隔内持续检查您当前的位置,并计算每次与您的警报位置的距离。当距离小于1000米时,您的闹钟响起。
答案 1 :(得分:0)
最简单的方法是将范围定义为圆形中心点(lat,lon)和半径(米)。
当用户位置在圆圈内时,您会发出警告 如果从当前位置到中心的距离小于您的情况下的半径(1000米),则圆点位于圆内。
只需使用currentlLocation.distanceTo()
方法计算从当前位置到警告圈中心的距离。