Tôi đã kết hợp câu trả lời của @ samshull ở trên (được cập nhật hợp lệ!) Với thông tin từ here để làm cho số InfoWindow xuất hiện nơi con trỏ của người dùng mo sử dụng trên dòng:
// Open the InfoWindow on mouseover:
google.maps.event.addListener(line, 'mouseover', function(e) {
infoWindow.setPosition(e.latLng);
infoWindow.setContent("You are at " + e.latLng);
infoWindow.open(map);
});
// Close the InfoWindow on mouseout:
google.maps.event.addListener(line, 'mouseout', function() {
infoWindow.close();
});
Ở đây, line
là đối tượng PolyLine của bạn; map
là đối tượng Map của bạn; và infoWindow
là đối tượng InfoWindow của bạn, mà tôi chỉ cần tạo với:
var infoWindow = new google.maps.InfoWindow();
Tôi cũng làm theo this advice bằng cách tái sử dụng các đối tượng InfoWindow tương tự cho tất cả các polylines của tôi chứ không phải là tạo ra một cái mới cho mỗi dòng:
Thực tiễn tốt nhất: Để có trải nghiệm người dùng tốt nhất, chỉ một cửa sổ thông tin sẽ mở trên bản đồ cùng một lúc. Nhiều cửa sổ thông tin tạo ra bản đồ xuất hiện lộn xộn. Nếu bạn chỉ cần một cửa sổ thông tin tại một thời điểm, bạn có thể tạo chỉ một đối tượng InfoWindow và mở nó tại các địa điểm khác nhau khi các sự kiện trên bản đồ, chẳng hạn như nhấp chuột của người dùng. Nếu bạn thực hiện cần nhiều cửa sổ thông tin, bạn có thể hiển thị nhiều đối tượng InfoWindow cùng một lúc.
Lưu ý rằng infoWindow.setContent()
mất một chuỗi. Vì vậy, hãy gọi toString()
trên một biến số nếu bạn muốn hiển thị một số trong InfoWindow.
Tôi xem tất cả điều này là giải pháp không hoàn hảo cho đến khi Google Maps hy vọng một ngày sẽ thêm thuộc tính title
vào PolylineOptions, giống như họ đã làm cho MarkerOptions.
Tôi đã sử dụng thông tin chi tiết đầy đủ, vì vậy điều này sẽ không hoạt động. – ScottE
Nhưng cách đặt vị trí cửa sổ thông tin trên polyline? – Naman
@Naman: Xem https://developers.google.com/maps/documentation/javascript/events?csw=1#EventArguments để biết cách nắm bắt vị trí con trỏ và câu trả lời của tôi bên dưới để biết chi tiết. – snark