15

tôi đang tìm kiếm một cách để recenter (lấy nét) bản đồ nếu một điểm đánh dấu nằm ngoài bản đồ. Ví dụ: nếu bạn nhấp vào điểm đánh dấu không nằm trong chế độ xem của bạn ... Điểm đánh dấu 1: Điểm đánh dấu New York 2: SanFransiscoAPI Google Maps v3 recenter bản đồ cho một điểm đánh dấu

trong V2 tôi thực hiện theo cách này ... nhưng đối với v3, containsLatLng cần thêm một thư viện và đã không làm việc cho tôi ... (xem bài viết khác của tôi: Google Maps v3 map.getBounds().containsLatLng is not a function) là họ bất kỳ cách nào khác để tập trung vào một vị trí đánh dấu ??

update:

 if ((!map.getBounds().contains(marker.getPosition())) & (showAllCategoryElements == 0)) { 
     var newCenterPointLng = (map.getBounds().getCenter().lng() + marker.getPosition().lng())/2; 
     var newCenterPointLat = (map.getBounds().getCenter().lat() + marker.getPosition().lat())/2; 

     map.panTo(marker.getPosition()); 
     //map.setCenter(new google.maps.LatLng(newCenterPointLat, newCenterPointLng)); 

     if (!map.getBounds().contains(marker.getPosition())){ 
      map.zoomOut(); 
     } 
    } 
+0

Bạn có yêu cầu mã hoạt động trong Phiên bản 3 hoặc Phiên bản 2 không? Bạn có cả hai thẻ và mã Phiên bản 2. –

Trả lời

38

Phương pháp bạn muốn là chứa(), không containsLatLng(). map.getBounds().contains(marker.getPosition())

Bạn có thể sử dụng một trong hai setCenter() hoặc phương pháp bản đồ để tập trung vào vị trí đánh dấu panto(): map.setCenter(marker.getPosition()) hoặc map.panTo(marker.getPosition())

Vì vậy, nếu tôi hiểu đúng những gì bạn đang cố gắng để làm, nó sẽ giống như thế này:

if ((!map.getBounds().contains(marker.getPosition())) && (showAllCategoryElements == 0)) { //Note the double & 
    map.setCenter(marker.getPosition()); 
    //OR map.panTo(marker.getPosition()); 
} 
+0

với lời khuyên của bạn tôi đã thay đổi nó (xem phần trên cùng của bài viết của tôi) ... 'map.setCenter' là không cần thiết nếu tôi sử dụng' PanTo'? Bây giờ tôi có "a is undefined" trong "http://maps.gstatic.com/cat_js/intl/de_de/mapfiles/api-3/9/2/%7Bmain,geometry%7D.js tệp" – Jim

+0

Mã cập nhật ở trên. Bạn có thể cần đăng thêm mã nếu bạn tiếp tục gặp lỗi. – puckhead

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