2015-02-16 3 views
0

Возможно ли показать сообщение в моем приложении для Android, когда пользователь имеет заданный радиус местоположения (широта и долгота). Я использую API карт Google 2.Работа с радиусом в Google Map Android API 2

Например, учитывая эту широту и долготу 40.218835, -74.000666, и если пользователь находится в радиусе 10 километров от этого местоположения, тогда я хочу, чтобы появилось сообщение: «вы рядом водяной знак». таких как тост, отображающий это сообщение.

Я просмотрел некоторые другие сообщения в Stackoverflow и наблюдал за некоторыми учебниками по радиусу, но я не могу понять, как получить то, что я хочу.

Любая помощь приветствуется

ответ

0

Да, есть. Вы используете диспетчер местоположения addProximityAlert с BroadcastReveiver.

вложит некоторую часть кода аналогичен тому, что я работал на некоторое время назад, это должно дать вам общее представление о том, что искать ...

// 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 
      } 
       ... 
       ... 
     } 
     .... 
} 

Это, вероятно, не будет работать (это только часть коды), но это только, чтобы получить вам представление о том, как вы можете делать вещи, которые вы желаете ...

Надеется, что это помогает ...

+0

Выглядит довольно запутанным, но тем не менее, я даю ему попробовать, и если он выполнит свою работу, ваш мужчина !!! – Henry

0

техника вы ищете это геообработка. Для официальной документации по геообработке на веб-сайте Google см. Документ this.

Для ознакомления с хорошим учебным пособием по Android обратитесь к документу this.

Надеюсь, что это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^