0

当用户具有给定的位置半径(纬度和经度)时,是否可以在我的 android 应用程序上显示一条消息。我正在使用谷歌地图 API 2。

例如,给定这个纬度和经度 40.218835,-74.000666,如果用户在这个位置的 10 公里半径范围内,那么我想弹出一条消息说“你在水印附近”。例如显示此消息的吐司。

我查看了 Stackoverflow 上的其他一些帖子并查看了有关半径的一些教程,但我不知道如何获得我想要的东西。

任何帮助表示赞赏

4

2 回答 2

0

您正在寻找的技术是地理围栏。有关 Google 网站上的官方地理围栏文档,请参阅文档。

有关相同的不错的 android 教程,请参阅文档。

希望这可以帮助!!

于 2015-02-17T22:07:54.687 回答
0

就在这里。您将 Location Manager 的addProximityAlertBroadcastReveiver一起使用。

我将放一些类似于我前一段时间工作的代码的一部分,它应该让您大致了解要搜索的内容......

// IN SOME CLASS, YOU REGISTER BROADCAST RECEIVER FOR SOME COORDINATES
Intent thisIntent = new Intent("my.package.name.MyProximityReceiver"); // MyProximityReceiver is the name of the class where you extend BroadcastReceiver
Bundle thisBundle = new Bundle();
thisBundle.putString("placeName", "SomePlaceName");
thisIntent.putExtras(thisBundle);
PendingIntent proximityIntent = PendingIntent.getBroadcast(getBaseContext(), 0,
        thisIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locManager.addProximityAlert(40.218835,-74.000666, 
        10000 , -1, proximityIntent);  // 10000 is the 10km radius , -1 means no expiration, read more in the link provided above

// END OF THAT SOME CLASS YOU ARE REGISTERING BROADCASTRECEIVER IN


// CLASS MyProximityReceiver
public class MyProximityReceiver extends BroadcastReceiver {

      public String placeName;

      @Override
      public void onReceive(Context c, Intent intent) {

          Log.d("TAG_IN_BROADCAST", "In broadcast receiver");
          String key = LocationManager.KEY_PROXIMITY_ENTERING;
          boolean entering = intent.getBooleanExtra(key, false);

          Bundle thisBundle = intent.getExtras();
          if (thisBundle != null)
          {
              placeName = thisBundle.getString("placeName");
          }

          if (entering)
          {
              Log.e("TAG_ENTERING","ENTERING");
              // SOMEONE ENTERED THE AREA
          }
          else
          {
              Log.e("TAG_LEAVING", "LEAVING");
              // SOMEONE EXITED THE AREA
          }
              ...
              ...
      }
      ....
}

这可能不起作用(这些只是代码的一部分),但这只是为了让您了解如何做您想做的事情......

希望这可以帮助...

于 2015-02-17T11:28:19.653 回答