2015-06-09 2 views
2

У меня есть действие API Карт Google и вы хотите, чтобы метки были доступны только в том случае, если пользователь находится в определенном радиусе к ним. Как это лучший способ? Это, как я установил свои маркеры: кодПосмотрите, находится ли текущее местоположение рядом с маркером

Marker marker1 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.793012, 9.926201)) 
      .title(getString(R.string.Title1)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 
    Marker marker2 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.792742, 9.939118)) 
      .title(getString(R.string.Title2)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 
    Marker marker3 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.793349, 9.932558)) 
      .title(getString(R.string.Title3)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 

Решение:

LatLng markerPosition = marker.getPosition(); 
myLocation = locationManager.getLastKnownLocation(provider); 
Location markerLoc = new Location("marker"); 
markerLoc.setLatitude(markerPosition.latitude); 
markerLoc.setLongitude(markerPosition.longitude); 
float meters = myLocation.distanceTo(markerLoc); 
+0

Вы решили проблему? Вы мне ответили? –

+0

У меня все еще были проблемы с сравнением двух мест. Я сделал это следующим образом: 'LatLng markerPosition = marker.getPosition(); myLocation = locationManager.getLastKnownLocation (поставщик); Местоположение markerLoc = новое местоположение («маркер»); markerLoc.setLatitude (markerPosition.latitude); markerLoc.setLongitude (markerPosition.longitude); float meters = myLocation.distanceTo (markerLoc); ' – maidi

+0

Редактируйте свой quesiton своим кодом –

ответ

0

Вы можете получить LatLng маркеров по marker.getPosition(); то вы можете сравнить его с CurrentLocation. Чтобы сделать это, вы можете проверить это post, а рядом вы можете сделать clickable или notclickable маркера следующим образом:

getMap().setOnMarkerClickListener(new OnMarkerClickListener() { 
    public boolean onMarkerClick(Marker marker) { 
     onMapClick(marker.getPosition()); 
     return true; 
    } 
}); 

Если вы возвращаете true для функции, то это означает, что вы приняли произошло событие щелчка на ваш ; в противном случае вы его не приняли.

Кроме того, вы можете сделать это с:

MarkerOptions.clickable и Marker.setClickable.

Это просто руководство, каким образом я буду делать то, что вы хотите. Надеюсь, поможет. :)

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