2010-05-25 27 views
29

Dưới đây là một số điểm:Làm thế nào để có được tất cả các dấu hiệu nhìn thấy được trên mức zoom hiện

  1. Tôi có một số dấu hiệu trên bản đồ và hồ sơ liên kết với nó trên bảng bên phải bên cạnh bản đồ. Chúng được kết nối thông qua id số, được lưu trữ dưới dạng thuộc tính của điểm đánh dấu.
  2. Tất cả các điểm đánh dấu được lưu trữ trong một mảng.
  3. Khi người dùng phóng to bản đồ, bản ghi, được liên kết với chỉ các điểm đánh dấu hiển thị sẽ được hiển thị trên bảng bên phải.

Vì vậy, làm cách nào để có được danh sách tất cả các điểm đánh dấu có thể nhìn thấy trên mức thu phóng hiện tại? Tôi đã tìm kiếm trên internet và không tìm thấy cái gì hữu ích. Một số loại nội dung tôi đang cố gắng đạt được có thể được tìm thấy here

Trả lời

22

Sử dụng GMap2.getBounds() để tìm hộp giới hạn. Sử dụng GLatLngBounds.containsLatLng() để kiểm tra từng điểm đánh dấu để xem nó có hiển thị hay không.

+0

cảm ơn bạn, nó làm việc. cho những người tìm kiếm giải pháp khác, đừng quên vượt qua GMarker.getLatLng() –

44

Trong Google Maps API V3 JavaScript của chúng tôi có thể sử dụng một cái gì đó như thế này:

var markers; // your markers 
var map; // your map 
for (var i=0; i<markers.length; i++){ 
    if(map.getBounds().contains(markers[i].getPosition())){ 
     // code for showing your object, associated with markers[i] 
    } 
} 
18

Tôi biết bạn muốn V2 API, nhưng tôi đã phải sửa một số nội dung tôi thấy để đáp ứng @ bruha cho V3, trong trường hợp ai đó tìm kiếm nó:

var markers; // your markers 
var map; // your map 

for(var i = markers.length, bounds = map.getBounds(); i--;) { 
    if(bounds.contains(markers[i].getPosition())){ 
     // code for showing your object 
    } 
} 

đi ngược qua mảng theo cách này đi qua mảng đánh dấu nhanh hơn, chúng tôi không đặt yêu cầu đó vào mỗi lần lặp đi qua vòng lặp và yêu cầu duy nhất chúng tôi phải thực hiện là nếu e điểm đánh dấu cụ thể nằm bên trong giới hạn.

EDIT: goofed decrementer tôi

EDIT: map.getBounds() nên được, là map.getBounds

+0

cảm ơn. nó làm việc cho android .. –

+0

Bất kỳ ý tưởng những gì cùng một điều cho v2 sẽ như thế nào? –

+2

Tại sao đi ngược lại đi qua mảng nhanh hơn? – jayp

1

Thật dễ dàng mã. Hãy thử mã này.

private boolean CheckVisibility(Marker marker) 
{ 
    if(googleMap != null) 
    { 
     //This is the current user-viewable region of the map 
     LatLngBounds latLongBounds = googleMap.getProjection().getVisibleRegion().latLngBounds; 

      if(latLongBounds.contains(marker.getPosition())) 
        //If the item is within the the bounds of the screen 
        return true; 
      else 
        //If the marker is off screen 
        return false; 
    } 
    return false; 
} 
0

đoạn mã của tôi

private boolean isAnyMarkerVisible(LatLng ll) { 
    if(gMap != null && markersData != null) { 
     final LatLngBounds latLongBounds = LatLngBounds.builder().include(ll).build(); 
     for (Store store : markersData) { 
      if (latLongBounds.contains(store.getLatLng())) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
Các vấn đề liên quan