2013-10-22 15 views
6

Harita üzerinde, kullanıcının geçerli konumuyla haritayı ortalayacak bir düğme eklemek istiyorum, ancak yalnızca kullanıcı haritada geziniyorsa ve geçerli konumu haritada görüntülenmiyorsa etkinleştirilmelidir. Gezinmeyi algılamak için onTouchEvent yöntemini kullandı.Konumum artık haritada gösterilmiyor (navigasyondan sonra)?

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) { 

Log.e("Touch", Integer.toString(event.getAction())); 

int action = event.getAction(); 
if (action == MotionEvent.ACTION_DOWN) { 
    touchStarted = true; 
} else if (action == MotionEvent.ACTION_MOVE) { 

    if (event.getPointerCount() > 3) 
    moveStarted = true; 
    return true; 

} 
return true; 
} 

ama benim şimdiki pozisyon ekranda artık olduğunu tespit nasıl?

cevap

9

Aslında ben daha iyi bir çözüm bulundu
0

Bunun nasıl yapılacağına dair en iyi düşüncem, önce kameranın (yani, kullanıcının görebileceği) neye işaret ettiğini bulmak olacaktır. Daha sonra, kameranın bakış açısını LatLng açısından tam olarak anlamak ve kullanıcının mevcut konumuyla karşılaştırmak için biraz matematik yapın. Geçerli LatLng, yakınlaşma ve Tilt

  1. alın CameraPosition verileri - aslında ekranda ne https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/CameraPosition
  2. Şekil dışarı. Bir başlangıç ​​noktası için burayı kontrol edin: https://developers.google.com/maps/documentation/android/views#the_camera_position
  3. Bulunulan konumunuzu bir LocationProvider üzerinden konumlandırın.
  4. Kullanıcının konumunun geçerli ekranda görüntülenebilir olup olmadığını görmek için biraz daha matematik yapın.

Alternatif bir öneri, dahil edilen Konumum Düğmesi'nin API'nın bir parçası olarak kullanılmasıdır. Her zaman görünür olacak, ancak Google Haritalar Uygulaması ile aynı olacak, böylece kullanıcılarınız bununla nasıl etkileşimde bulunacağını zaten anlayacaktır.

private void CheckVisibility(Marker myPosition) 
{ 
    if(googleMap != null) 
    { 
     //This is the current user-viewable region of the map 
     LatLngBounds bounds = googleMap.getProjection().getVisibleRegion().latLngBounds; 

      if(bounds.contains(myPosition.getPosition())) 
        //If the item is within the the bounds of the screen 

      else 
        //If the marker is off screen 
    } 
} 
:
İlgili konular