2011-07-05 7 views
16

Có cách nào để thêm một infoWindow đến một vòng tròn được tạo ra bởi google.maps.Circlegoogle bản đồ v3 thêm một cửa sổ thông tin để một vòng tròn

một cái gì đó như thế này

var circ = new google.maps.Circle({ 
      center:latlng, 
      clickable:false, 
      fillColor:colors[count], 
      fillOpacity:0.3, 
      map:map, 
      radius:radius, 
      strokeColor:colors[count], 
      strokeOpacity:0.3}); 

//create info window 
var infoWindow= new google.maps.InfoWindow({ 
    content: "Your info here" 
    }); 

//add a click event to the circle 
google.maps.event.addListener(circ, 'click', function(){ 
//call the infoWindow 
infoWindow.open(map, circ); 
}); 

hoặc cách khác là có cách tạo điểm đánh dấu vô hình ở giữa vòng tròn có thể được nhấp để truy cập vào thông tinWindow

+0

hoặc cách khác là có một cách để tạo ra một dấu hiệu vô hình ở trung tâm của vòng tròn có thể được nhấp vào để truy cập vào một infoWindow – trs

Trả lời

37

bạn có thể có cửa sổ thông tin cho lớp phủ vòng kết nối của mình. Nhưng bạn phải điều chỉnh một chút mã của mình.

Trước tiên, cần phải đặt clickable=true cho lớp phủ Vòng kết nối của bạn (nếu không nhấp vào các sự kiện trên vòng kết nối sẽ không được xử lý).

Sau đó, bạn phải thay đổi mã của trình nghe nhấp chuột. Đặt vòng tròn như là một tham số để chức năng mở() không có hiệu lực (Circle không phải là loại thích hợp của MVCObject, cho tài liệu đọc giải thích của InfoWindow .open() chức năng). Để hiển thị cửa sổ thông tin, bạn phải cung cấp vị trí của nó - ví dụ: vị trí của sự kiện click, trung tâm của vòng tròn, ....

Mã này là sau đó

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); 
    infoWindow.open(map); 
}); 

hoặc

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(circ.getCenter()); 
    infoWindow.open(map); 
}); 

trả lời để bình luận của bạn: Bạn có thể tạo một lừa với một điểm đánh dấu vô hình (chỉ cần đặt hình ảnh hoàn toàn minh bạch như là biểu tượng đánh dấu), nhưng tôi sẽ thích giải pháp với lớp phủ Circle.

+0

gì ev đại diện? và có cách nào để chỉ báo cho người dùng nhấp vào vòng kết nối như tùy chọn "tiêu đề" trong điểm đánh dấu – trs

+0

ev là MouseEvent (http://code.google.com/apis/maps/documentation/javascript/reference.html #MouseEvent). Lớp phủ vòng tròn không có bất kỳ chỉ báo văn bản nào. Nhưng khi có thể nhấp thì con trỏ sẽ thay đổi khi nó được định vị trên vòng tròn. Việc tạo chỉ báo văn bản không đơn giản như vậy - tôi sẽ làm điều đó với lớp phủ tùy chỉnh và trình xử lý sự kiện di chuột qua của vòng kết nối. – Tomik

+0

Tôi đã thử phương pháp này nhưng nó không hoạt động. Tôi nhận được sự kiện bấm nhưng tôi không thể mở infoWindow! bạn có gợi ý nào khác không? – Future2020

2

để thiết lập cửa sổ thông tin tại nơi chuột nhấp

google.maps.event.addListener(circ, 'click', function(ev){ 
    infoWindow.setPosition(ev.latLng); //<-- ev matches what you put^(mouse event) 
    infoWindow.open(map); 
});