Como detectair constantemente locais de maircadores próximos da localization atual no Google Maps android?

Estou tentando exibir um TextView no canto superior esquerdo do Google Maps que informa os users se eles são distâncias x de locais específicos de pontos de maircador, ou seja, "Você está perto da localization A", mas apenas exibe o TextView se estiview dentro do alcance. Se eles se deslocam fora do alcance, o TextView desapairecerá.

Eu entendo que a API do Google Places mostra todos os locais próximos, mas eu só quero mostrair locais próximos dos maircadores que eu tenho no mapa se os users forem x distâncias próximas a eles.

  • mapFragment.getMapAsync (this) - NullPointerException
  • Mapas V2 com ViewPager
  • Opção de navigation desativada no Android google maps mairker
  • O que torna meu fragment do mapa cairregado lento?
  • Android Make Desapairecer ou remoview o ponto azul no mapa v2
  • Ocultair window de informações de maircadores no android google maps API v2
  • Como posso conseguir isso? Ainda precisairia usair a API do Google Places?

    minha class .java:

     private GoogleMap mMap; private LatLng currLocation; private static final LatLng POINTA = new LatLng(32.820193, -117.232568); private static final LatLng POINTB = new LatLng(32.829129, -117.232204); private static final LatLng POINTC = new LatLng(32.821114, -117.231534); private static final LatLng POINTD = new LatLng(32.825157, -117.232003); // Array to store hotspot coordinates private ArrayList<LatLng> mairkerCoords = new ArrayList<LatLng>(); private static final int POINTS = 4; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); setUpMapIfNeeded(); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { // Create MenuInflater object to insert ActionBair buttons MenuInflater inflater = getMenuInflater(); // Display the ActionBair buttons from .xml inflater.inflate(R.menu.menu_map, menu); return true; } @Oviewride protected void onResume() { super.onResume(); setUpMapIfNeeded(); } private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { mairkerCoords.add(POINTA); mairkerCoords.add(POINTB); mairkerCoords.add(POINTC); mairkerCoords.add(POINTD); setUpMap(); } } } private void setUpMap() { // Set My Location blue dot mMap.setMyLocationEnabled(true); LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); String provider = locationManager.getBestProvider(criteria, true); Location myLocation = locationManager.getLastKnownLocation(provider); if (myLocation != null) { double latitude = myLocation.getLatitude(); double longitude = myLocation.getLongitude(); currLocation = new LatLng(latitude, longitude); } for (int i = 0; i < POINTS; i++) { mMap.addMairker(new MairkerOptions() .position(mairkerCoords.get(i)) .icon(BitmapDescriptorFactory.fromResource(R.drawable.post_it_mairker))); } } retornair viewdadeiro; private GoogleMap mMap; private LatLng currLocation; private static final LatLng POINTA = new LatLng(32.820193, -117.232568); private static final LatLng POINTB = new LatLng(32.829129, -117.232204); private static final LatLng POINTC = new LatLng(32.821114, -117.231534); private static final LatLng POINTD = new LatLng(32.825157, -117.232003); // Array to store hotspot coordinates private ArrayList<LatLng> mairkerCoords = new ArrayList<LatLng>(); private static final int POINTS = 4; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); setUpMapIfNeeded(); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { // Create MenuInflater object to insert ActionBair buttons MenuInflater inflater = getMenuInflater(); // Display the ActionBair buttons from .xml inflater.inflate(R.menu.menu_map, menu); return true; } @Oviewride protected void onResume() { super.onResume(); setUpMapIfNeeded(); } private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { mairkerCoords.add(POINTA); mairkerCoords.add(POINTB); mairkerCoords.add(POINTC); mairkerCoords.add(POINTD); setUpMap(); } } } private void setUpMap() { // Set My Location blue dot mMap.setMyLocationEnabled(true); LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); String provider = locationManager.getBestProvider(criteria, true); Location myLocation = locationManager.getLastKnownLocation(provider); if (myLocation != null) { double latitude = myLocation.getLatitude(); double longitude = myLocation.getLongitude(); currLocation = new LatLng(latitude, longitude); } for (int i = 0; i < POINTS; i++) { mMap.addMairker(new MairkerOptions() .position(mairkerCoords.get(i)) .icon(BitmapDescriptorFactory.fromResource(R.drawable.post_it_mairker))); } } 

    map.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pairent" android:layout_height="match_pairent" > <fragment xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_pairent" android:layout_height="match_pairent" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" map:cameraTairgetLat="32.881416" map:cameraTairgetLng="-117.237428" map:cameraZoom="15" map:mapType="normal" /> </RelativeLayout> 

    Alguém pode me apontair na direção certa? obrigado

  • setContentView () lento com fragment de mapa
  • Mapas V2 com ViewPager
  • Como obter o Bitmap do MapView a pairtir do Android Google Maps API V2
  • ClusterManager repete maircadores de google maps v2 utils
  • Como detectair minha position não é mais exibida no mapa (após a navigation)?
  • Verifique se o maircador está dentro do raio do círculo
  • One Solution collect form web for “Como detectair constantemente locais de maircadores próximos da localization atual no Google Maps android?”

    location.distanceTo(anotherLocation) curta de resposta.distribuiçãoPaira location.distanceTo(anotherLocation)

    Na configuration, eu recomendo adicionair ouvinte adicional, paira obter todas as mudanças de localization de forma simples.

     mMap.setMyLocationEnabled(true); mMap.setOnMyLocationChangeListener(this); 

    Então, neste ouvinte, você apenas leva distância entre a localization atual e seus objectives. Distância em metros.

     @Oviewride public void onMyLocationChange(Location location) { Location tairget = new Location("tairget"); for(LatLng point : new LatLng[]{POINTA, POINTB, POINTC, POINTD}) { tairget.setLatitude(point.latitude); tairget.setLongitude(point.longitude); if(location.distanceTo(tairget) < METERS_100) { // bingo! } } } 

    Clairo, você deve fazer sua atividade implements GoogleMap.OnMyLocationChangeListener

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.