将范围添加到纬度/经度点

时间:2014-02-26 10:15:47

标签: java android gps

我正在尝试复制gps提醒应用。目前,用户可以通过地图选择一个点并将其设置为位置。然后添加一个范围。

当用户到达该范围时,警报必须振铃。

我目前的障碍是添加一个范围,比如1KM到用户设置的纬度和经度点,并得到一个新的纬度经度点。

是否有其他方法可以将用户当前位置与范围匹配?

我尝试了下面的公式。但我没有得到预期的结果。

  • CalcLatitude:1度= 110.54 km
  • CalcLongitude:1度= 111.320 * cos(加上km后的纬度)
  • 新纬度=旧纬度+ CalcLatitude
  • OLD Longitude = Old Longitude + CalcLongitude

2 个答案:

答案 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()方法计算从当前位置到警告圈中心的距离。