18

Có khoảng 100 điểm đánh dấu trên bản đồ google cộng với một điểm đánh dấu đặc biệt cần được hiển thị. Hiện tại, các điểm đánh dấu xung quanh nó ẩn hoàn toàn hoặc một phần khi bản đồ được thu nhỏ. Tôi cần đánh dấu đó để có thể nhìn thấy hoàn toàn và tôi nghĩ rằng việc giữ nó ở trên cùng của tất cả các điểm đánh dấu khác sẽ thực hiện thủ thuật. Nhưng tôi không thể tìm cách sửa đổi thứ tự xếp chồng của nó (chỉ mục z).Google Maps: Làm cách nào để thay đổi chỉ mục z của một Marker?

+2

Giải pháp API Google Maps v3 có tại đây: http://salman-w.blogspot.com/2012/07/change-z-index-google-map-v3-markers.html –

Trả lời

5

Sử dụng tùy chọn zIndexProcess trong GMarkerOptions khi bạn tạo điểm đánh dấu mà bạn muốn ở trên cùng. Ví dụ:

var pt = new GLatLng(42.2659, -83.74861); 
var marker = new GMarker(pt, {zIndexProcess: function() { return 9999; }}); 
map.addOverlay(marker); 

Tôi tin mặc định là có chỉ số z là vĩ độ của điểm đánh dấu, vì vậy điều này khá an toàn khi mang một điểm đánh dấu lên mặt trước. Hơn nữa, đây chỉ là một ví dụ đơn giản; bạn có thể thiết lập chỉ mục z của tất cả các điểm đánh dấu của bạn theo bất kỳ cách đơn giản hoặc phức tạp nào bạn muốn. Một ví dụ khác là có hai hàm: một cho các dấu hiệu đặc biệt và một cho phần còn lại.

var pt1 = new GLatLng(42.2659, -83.74861); 
var pt2 = new GLatLng(42.3000, -83.74000); 
var marker1 = new GMarker(pt1, {zIndexProcess: specialMarker}); 
var marker2 = new GMarker(pt2, {zIndexProcess: normalMarker}); 
map.addOverlay(marker1); 
map.addOverlay(marker2); 

function specialMarker() { 
    return 9999; 
} 

function normalMarker() { 
    return Math.floor(Math.random()*1000); 
} 
+0

Ah ... điều này có vẻ đầy hứa hẹn . Nhưng tôi tự hỏi nếu mã hóa cứng 9999 là OK. Có thể có điểm đánh dấu với chỉ mục z> = 9999 không? –

+0

Tôi đã chỉnh sửa câu trả lời ở trên để giải quyết câu hỏi này. – Mark

+0

Tôi đã gợi ý rằng tôi có thể sử dụng hàm GOverlay.getZIndex() để tìm chỉ mục z của các điểm đánh dấu được hiển thị trên một vĩ độ cụ thể, nhưng không thể làm cho nó hoạt động :( –

5

Thêm vào câu trả lời jhanifen, nếu bạn muốn để có được một điểm đánh dấu đặc biệt của bạn sẽ được trên đầu trang của tất cả các phần còn lại, thiết lập nó ZIndex để google.maps.Marker.MAX_ZINDEX + 1. Điều này sẽ đảm bảo rằng nó nằm trên đầu của bất kỳ điểm đánh dấu nào trên bản đồ.

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