2010-03-22 45 views
18

Tôi muốn điền một bản đồ google với một số điểm đánh dấu. Khi người dùng nhấp vào một điểm đánh dấu, tôi muốn nó gửi người dùng đến một trang web khác được chỉ định cho vị trí đó. (ví dụ: giả sử các điểm đánh dấu đại diện cho ngôi nhà, khi bạn nhấp vào điểm đánh dấu, nó sẽ đưa bạn đến trang có thêm thông tin về nhà)Sự kiện nhấp chuột của Google Maps Marker

Cách đơn giản nhất để làm điều này là gì?

Trả lời

20

Bạn cần đính kèm trình xử lý sự kiện vào từng điểm đánh dấu. Trình xử lý nhấp chuột có thể đặt document.location thành URL của trang bạn muốn truy cập.

var marker = new GMarker(location); 
GEvent.addListener(marker, "click", function() { 
    window.location = theURL; 
}); 
map.addOverlay(marker); 

Vì có thể bạn sẽ thêm điểm đánh dấu trong vòng lặp, bạn sẽ cần đảm bảo mỗi người nhận được URL riêng. Vì các bao đóng giữ các biến thực mà chúng truy cập (không phải các giá trị của chúng), bạn có thể cần phải đặt ít nhất addListener mã trong hàm riêng của nó để tạo phạm vi riêng của nó. vòng lặp của bạn sẽ trông giống như sau:

function createMarker(location, url) { 
    var marker = new GMarker(location); 
    GEvent.addListener(marker, "click", function() { 
     window.location = url; 
    }); 
    return marker; 
} 

// Assuming locations is an array of objects with lat, lng, and url properties 
for (var i = 0; i < locations.length; i++) { 
    var loc = locations[i]; 
    map.addOverlay(createMarker(new GLatLng(loc.lat, loc.lng), loc.url)); 
} 
+0

Thanks for the help! – Mike

+3

Độc giả của câu trả lời này cần lưu ý rằng GEvent cần được thay thế bằng google.maps.event nếu bạn đang sử dụng v3 của API. Hãy xem câu trả lời khác với số phiếu cao! –

51

Tôi tin rằng như của google map v3, GEvent không được công nhận, dưới đây làm việc cho tôi

google.maps.event.addListener(marker, "click", function() { 
    window.location = url; 
}); 
+0

điều này làm việc hoàn hảo cho tôi cũng như trong v3. Không biết về những Gevents và như vậy, đã chọn ví dụ này đầu tiên :) –

+1

Vâng, tôi nghĩ @Mike nên thay đổi câu trả lời chấp nhận, như trước đó là hợp lệ trong năm 2010 – Karol

+1

Ví dụ này không hoạt động trong một vòng lặp do các vấn đề phạm vi được đề cập trong câu trả lời khác. – James

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