2016-07-14 19 views
5

Uygulamamı programlamaya çalışıyorum, böylece bir okun ImageView'ı verilen bir android.Location noktasını gösterecek. Şu anda doğru yönde değil. Bazı sebeplerden dolayı oldukça kapalı. Bence doğru yöne baktığım yönü dikkate almadığım için. İşte Enlem ve boylamda belirli bir konumla yüzleşmek için bir ImageView öğesini döndürme

Şu anda yapıyorum ne: Ne kadar daha bunu yapmak için daha iyi bir yolu

float GetAngle(Location myLocation) 
{ 
    float angle = (float) Math.toDegrees(Math.atan2(theirLocation.getLatitude() - myLocation.getLatitude(), theirLocation.getLongitude() - myLocation.getLongitude())); 
    if (angle < 0) 
     angle += 360; 
    return angle; 
} 

var mı:

İşte
float angle = GetAngle(myLocation); 
RotateAnimation anim = new RotateAnimation(0.0f, angle, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
anim.setInterpolator(new LinearInterpolator()); 
anim.setRepeatCount(0); 
anim.setDuration(2); 
anim.setFillAfter(true); 
arrow.startAnimation(anim); 

GetAngle() fonksiyonu nedir? ImageView'ın bir konumdan verdiğim koordinatlara nasıl bakacağını bilmiyorum.

+1

Oku http://stackoverflow.com/questions/4308262/calculate-compass-bearing-heading-to-location-in-android. Aradığın cevap bu. –

cevap

1

İlk olarak, bir görüntü görünümünün neden bir açıyla dönmesini istediğinizden emin değilim. Ancak, görüntü görünümünü bir işaretçi ile değiştirebileceğinizi düşünüyorsanız bunu yapın. Bir almak için bu durumda

  1. Kolay içinde işaretleyici kullanarak avantajlarından çok ve set rotasyon

  2. Rotasyon

İkincisi çok düzgün olacak, kullanım vardır

Bu işlev

açısınıAngle = startingLocation.bea olsun ringTo (endingLocation);

+0

Bir işaretçi sadece bir pinpoint yeri göstermiyor mu? Bir şeyin bir yöne doğru yönelmesini istiyorum. – saboehnke

+0

İşaretçi simgesini istediğiniz herhangi bir görüntüye ayarlayın. Bu durumda 'ok'. Marker, yön ve rotasyon açısından herhangi bir bakış açısına göre pek çok avantaja sahiptir –

+0

Bir google harita kullanmam gerekiyor mu? Çünkü ben değilim. Ben sadece android.Location dan enlem ve boylam alıyorum. – saboehnke

0

Önce kodunuzu animasyon olmadan güncelleyin. Aynı problemi yaşadım, bu yüzden animasyon farklı davranışları yeniden başlatabilir veya durdurabilir.

float angle = GetAngle(myLocation); 
myView.setRotation(angle); 
//Or also check 
myView.setRotationX(angle); 
myView.setRotationY(angle); 
+0

Bu düzeltme değildi, ancak bir animasyon kullanmak yerine setRotation() işlevini takdir ediyorum, teşekkürler. – saboehnke

+0

@saboehnke Github'daki özel listview - LinkedListView ile aynı sorunu yaşadım. Kaydırma başına animasyonu canlandırmak ve animasyonu başlatmak istiyorum, ama bu benim sorunumdu. Bu yüzden, onunla herhangi bir eylemde sadece dönüşümle sorunu çözdüm. – GensaGames

İlgili konular