5

Tôi biết tôi có thể tạo hiệu ứng "thêm" của điểm đánh dấu trên bản đồ google, a la https://developers.google.com/maps/documentation/javascript/overlays#MarkerAnimationsHoạt ảnh ngược lại để xóa đánh dấu Google Map?

Tôi có thể làm hoạt ảnh ngược lại để xóa điểm đánh dấu khỏi bản đồ không? Tôi muốn nó bay trở lại lên trên cùng của bản đồ trên loại bỏ đánh dấu ... là có thể?

Đây là mã remove tôi cho đến nay (chỉ cần loại bỏ nó ra khỏi bản đồ, không có hình ảnh động):

// TODO figure out if there is a way to animate this removal, like the add 
$.contextualMap.prototype.removeMarker = function(m) { 
    m.mapMarker.setMap(null); 
    m.mapMarker = null; 
}; 
+0

Có vẻ không phải là có thể thông qua các tiêu chuẩn [google.maps.Animation] (https://developers.google. com/maps/documentation/javascript/reference # Animation), vì chỉ có 2 hình động được hỗ trợ (BOUNCE và DROP). Bạn sẽ probabl phải làm cho hình ảnh động của riêng bạn bằng cách sử dụng javascript bình thường và di chuyển các điểm đánh dấu trên bản đồ .... Đừng quên tắt bóng hoặc xử lý nó đặc biệt ... – TMS

Trả lời

11

google.maps.Animation không hỗ trợ hoạt ảnh thả ngược, bạn cần viết tập lệnh của riêng bạn để tạo hoạt ảnh cho điểm đánh dấu.

Bạn có thể viết một cái gì đó như thế này:

function removeMarkerWithAnimation(map, marker){ 
    (function animationStep(){ 
     //Converting GPS to World Coordinates 
     var newPosition = map.getProjection().fromLatLngToPoint(marker.getPosition()); 

     //Moving 10px to up 
     newPosition.y -= 10/(1 << map.getZoom()); 

     //Converting World Coordinates to GPS 
     newPosition = map.getProjection().fromPointToLatLng(newPosition); 
     //updating maker's position 
     marker.setPosition(newPosition); 
     //Checking whether marker is out of bounds 
     if(map.getBounds().getNorthEast().lat() < newPosition.lat()){ 
      marker.setMap(null); 
     }else{ 
      //Repeating animation step 
      setTimeout(animationStep,10); 
     } 
    })(); 
} 

Đây là DEMO:

+0

Cảm ơn! Đây chắc chắn là một điểm khởi đầu tốt, và chính xác là thứ tôi đang tìm kiếm. – neezer

+0

@neezer Đối với mục đích trình diễn, tôi đã sử dụng tính năng nới lỏng 'tuyến tính', nhưng đối với hoạt ảnh thực tế hơn, có thể bạn cần thay đổi tham số 'newPosition.y' bằng cách sử dụng một hàm nới lỏng khác. – Engineer

0

Ý tưởng của tôi:

  1. tạo GIF động của một pin marker bay, sau đó biến mất.
  2. trên sự kiện xóa điểm đánh dấu, hoán đổi icon để hiển thị GIF
  3. Vì bạn đã tạo GIF, bạn nên biết thời lượng hoạt ảnh. Sau đó, setTimeout với giá trị này để gọi setMap (null)

Nó có thể ngăn chặn sự kiện tuyên truyền, một trong nhiều nhược điểm có thể xảy ra.

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