2015-10-05 16 views
5

Làm thế nào để đặt lại điểm neo InfoWindows của người đánh dấu sau khi đánh dấu đã được xoay luôn ở vị trí trên cùng? Vấn đề là điểm neo được xoay cùng với điểm đánh dấu.Android Google Bản đồ Thông tinWindow điểm neo sau khi xoay điểm đánh dấu

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

Trả lời

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

Giải thích:

Nếu chúng ta giả định rằng bản đồ đánh dấu là hình tròn (hợp lý nhất cho mục đích xoay) và như chúng ta biết rằng điểm InfoWindow neo (B) có thể được đặt ở bất kỳ điểm tọa độ tương đối nào từ 0.0.0.0 (phía trên bên trái) đến 1.1 (phía dưới bên phải), chúng ta có thể tìm thấy bất kỳ điểm nào trên đường tròn bằng độ quay đã cho bằng công thức SIN và COS.

enter image description here

X khoảng cách giữa A và B = Radius * SIN (độ); Y khoảng cách giữa A và B = Bán kính * COS (độ);

Thông qua họ cho điểm đánh dấu Android phối chúng tôi nhận được:

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

  1. Chúng tôi tìm SINE từ góc xoay oposit (giá trị âm) chuyển đổi để radian (độ * PI/180);
  2. Nhân với bán kính hình tròn (0.5) để lấy khoảng cách trên trục X;
  3. Chuyển sang PHẢI theo bán kính (+0.5) để ở giữa hình dạng (trên trục X);

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

  1. Tìm cosin từ góc xoay oposit (giá trị âm) chuyển đổi sang radian (độ * PI/180);
  2. Nhân với bán kính hình tròn (0.5) để nhận khoảng cách trên trục Y;
  3. TẮT lên theo bán kính (-0,5) để ở trên cùng của hình dạng (trên trục Y);
  4. Đặt giá trị dương (có dấu -) làm hệ tọa độ điểm đánh dấu có giá trị dương trên trục Y xuống dưới;
+0

Một số giải thích sẽ tốt đẹp –

+0

Góc biến có nghĩa là gì? Làm thế nào để đến một giá trị cụ thể cho điều này như 130.0? – Madhan

Các vấn đề liên quan