2015-10-05 7 views
5

Jak zresetować punkt zakotwiczenia InfoWindows markera po obróceniu znacznika, aby zawsze znajdował się w środkowej górnej części? Problem polega na tym, że punkt kontrolny obraca się wraz ze znacznikiem.Android Google Map Info Punkt widoku drzewa po obrocie znacznika

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

Odpowiedz

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); 

Objaśnienie:

Jeśli założymy, że mapa marker jest okrągły kształt (najbardziej rozsądne dla celów obrotu), a jak wiemy, że punkt InfoWindow kotwica (B) może być ustawione na dowolny względny punkt współrzędnych od 0,0,0,0 (górny lewy) do 1,1 (prawy dolny róg) możemy znaleźć dowolny punkt na linii okręgu przez dany stopień obrotu za pomocą formuł SIN i COS.

enter image description here

x odległość między A i B = promień * sin (stopnie); Y odległość między A i B = Promień * COS (stopień);

ich przyjęcie dla Androida markera współrzędnych otrzymujemy:

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

  1. Znajdziemy sine od kąta obrotu oposit (wielkość ujemna) przekształcono na radiany (stopień * PI/180);
  2. Pomnożyć przez promień okręgu (0,5), aby uzyskać odległość na osi X;
  3. Przesunięcie w PRAWO o promień (+0.5) w środku kształtu (na osi X);

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

  1. Znajdź cosinus od kąta obrotu oposit (wartości ujemne) przekształca się radianach (stopień * pi/180);
  2. Pomnożyć przez promień okręgu (0,5), aby uzyskać odległość na osi Y;
  3. Przesunięcie UP o promień (-0.5) na kształt (na osi Y);
  4. Wartość dodatnia (z - znakiem) jako układ współrzędnych znacznika ma dodatnie wartości na osi Y w dół;
+0

Niektóre wyjaśnienia byłyby przyjemne. –

+0

Co to jest zmienny kąt? Jak dojść do konkretnej wartości, na przykład 130.0? – Madhan

Powiązane problemy