2015-10-05 16 views
5

İşaretçi'nin InfoWindows işaretleme noktası, işaretleyici her zaman en üstte olacak şekilde döndürülür? Sorun, bağlantı noktasının işaretleyici ile birlikte döndürülmesidir.Android Google Map InfoWindow döndürme işaretini döndürme noktasından sonra döndürme noktası

static final LatLng PERTH = new LatLng(-31.90, 115.86); 
Marker marker = mMap.addMarker(new MarkerOptions() 
        .position(PERTH) 
        .anchor(0.5,0.5) 
        .rotation(90.0) 
        .infoWindowAnchor(0.5,0)); 

//Update marker with new data (position and direction angle) 
var angle = 130.0; 
marker.setPosition(new LatLng(-30.20, 113.27)); 
marker.setRotation(angle); 
marker.setInfoWindowAnchor(x,y); // how to calculate these values? 

enter image description here

cevap

10
var angle = 130.0; 
var x = Math.sin(-angle * Math.PI/180) * 0.5 + 0.5; 
var y = -(Math.cos(-angle * Math.PI/180) * 0.5 - 0.5); 
marker.setInfoWindowAnchor((float)x, (float)y); 

Açıklama:

biz harita işaretleyici (rotasyon amacıyla en makul) dairesel şekil olduğunu kabul edersek ve biz infowindow çapa noktası (B) 'olabileceğini biliyoruz olarak Herhangi bir göreceli koordinat noktasına 0,0,0,0 (sol üst) ile 1,1 (sağ alt) arasında ayarlandığında, SIN ve COS formülleri kullanılarak verilen dönüş derecesiyle daire çizgisi üzerinde herhangi bir noktayı bulabiliriz. A ve B = yarıçapı * SIN (derece) arasında

enter image description here

X mesafesi; A ve B = Yarıçap * COS (derece) arasında Y mesafesi; Android marker için bunları benimseyen

elde ederiz koordinatları: radyana (derece * PI/180) dönüştürülür

var x = Math.sin(-angle * Math.PI/180) * 0.5 + 0.5;

  1. Biz oposit dönme açısı (negatif değer) gelen Sinüsü;
  2. X ekseninde mesafe elde etmek için daire yarıçapı (0,5) ile çarpın;
  3. Şeklin ortasında olmak üzere (X ekseni) yarıçapa (+0,5) sağa kaydır;

var y = -(Math.cos(-angle * Math.PI/180) * 0.5 - 0.5);

  1. oposit dönüş açısı (negatif değer) radyan (derece * PI/180) dönüştürülebilir kosinüs Bul;
  2. Y ekseninde mesafe elde etmek için daire yarıçapı (0,5) ile çarpın;
  3. Şeklin üst kısmında olmak üzere yarıçapı (-0.5) kaydırın (Y ekseninde);
  4. İşaretçi koordinat sistemi olarak Y ekseninde aşağı doğru pozitif değerler (işaretli) yapın;
+0

Bazı açıklamalar güzel olurdu –

+0

Değişken açı anlamı nedir? Buna 130.0 gibi belirli bir değere nasıl ulaşılır? – Madhan

İlgili konular