【问题标题】:Add range to latitude/longitude point将范围添加到纬度/经度点
【发布时间】:2014-06-14 05:41:11
【问题描述】:

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

当用户到达该范围时,警报必须响起。

我目前的障碍是在用户设置的纬度和经度点上添加一个范围让我们说 1KM 并获得一个新的经纬度点。

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

我试过下面的公式。但我没有得到想要的结果。

  • 计算纬度:1 度 = 110.54 公里
  • CalcLongitude: 1 deg = 111.320*cos(加入km后的纬度)
  • 新纬度 = 旧纬度 + 计算纬度
  • 旧经度 = 旧经度 + 计算经度

【问题讨论】:

标签: java android gps


【解决方案1】:
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 米时,您的闹钟会响起。

【讨论】:

    【解决方案2】:

    最简单的方法是将范围定义为圆心(纬度,经度)和以米为单位的半径。

    当用户位置在圆圈内时发出警告。
    如果从当前位置到中心的距离小于您的情况下的半径(1000m),则一个点在圆内。

    只需使用currentlLocation.distanceTo()方法计算当前位置到警告圈中心的距离。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多