2010-01-17 65 views
5

Tôi đang vẽ khoảng 20 điểm đánh dấu trên bản đồ, vị trí trong thành phố. Khi tôi sử dụng getLatLng để tìm trung tâm thành phố, nó luôn bị loại bỏ một chút khỏi các địa điểm tôi đang vẽ, có nghĩa là các điểm đánh dấu thường nằm ở một góc của bản đồ của tôi thay vì ở giữa.căn giữa bản đồ google dựa trên các giá trị dài của điểm đánh dấu lat

có cách nào để căn giữa bản đồ ở vị trí trung tâm hơn cho vị trí của tôi không? Tôi đoán tôi cần một số loại tọa độ vĩ độ/vĩ độ "trung bình" tính từ 20 giá trị lat/long mà tôi có sẵn.

Điều này có khả thi không?

Trả lời

6

Tìm trung tâm nên khá dễ dàng. Chỉ cần tìm vĩ độ và vĩ độ nhỏ nhất và lớn nhất trong nhóm của bạn là 20.

Trung tâm sẽ là [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2].

Cái gì như:

var points = Array(); 
points.push(new GLatLng(xxx, yyy)); 
... 

min_lat = 90; 
max_lat = -90; 
min_long = 180; 
max_long = -180; 
for (p in points) { 
    if (p[0] < min_lat) { 
     min_lat = p[0]; 
    } 
    if (p[0] > max_lat) { 
     max_lat = p[0]; 
    } 
    if (p[1] < min_long) { 
     min_long = p[1]; 
    } 
    if (p[1] > max_long) { 
     max_long = p[1]; 
    } 
} 

center = new GLatLng(min_lat + (max_lat - min_lat)/2, 
        min_long + (max_long - min_long)/2]; 
map.setCenter(center, 10); 

Mã này có thể sẽ gặp khó khăn nếu điểm của bạn vượt quá ranh giới kinh độ (& plusmn; 180 °). Nó cũng giả định rằng các điểm được đặt trên một bề mặt phẳng (chứ không phải là bề mặt của một hình cầu).

Không ai trong số đó nên quan trọng hơn nhiều nếu bạn đang nói về tọa độ trong vòng vài trăm dặm của nhau ở Mỹ.

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