Nếu không có thêm chi tiết về dự án này, đây là những gì tôi sẽ đề xuất. Giả sử:
- Mỗi sự kiện có một bản đồ để nó
- Có tồn tại một nút hoặc liên kết đó sẽ khởi động hộp thoại
- vào nút hoặc liên kết sẽ có một URL mà là để được sử dụng cho các
iframe
làm việc Ví dụ: https://jsfiddle.net/Twisty/9dk8jrqc/
HTML
<div id="eventContent" title="Event">
<div id="map"></div>
</div>
<button id="show">
Show Event
</button>
jQuery
var event = {
"map": "https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d9927.782117587185!2d-0.1578822!3d51.5325589!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xc2ee490704162539!2sThe+Hub!5e0!3m2!1sen!2suk!4v1452460618657"
};
$(function() {
function showMap(url) {
$('#eventContent div#map').html("");
var frame = $("<iframe>", {
width: 600,
height: 450,
frameborder: 0,
allowfullscreen: true
}).css("border", 0);
frame.attr("src", url);
frame.appendTo($("#eventContent div#map"));
$('#eventContent').dialog("open");
}
$('#eventContent').dialog({
autoOpen: false,
modal: true,
width: 640,
height: 480
});
$('#show').click(function() {
showMap(event.map)
});
});
Để giữ cho các giải pháp năng động, tôi đề nghị một chức năng thu thập các nguồn được sử dụng cho các iframe
. Nếu có một số iframe
cũ hơn, từ một hành động trước đó, nó sẽ bị xóa. Sau đó, tôi tạo một mã số iframe
động, với nguồn mới và thêm vào #map
. Một khi điều này được thực hiện, tôi gọi mở trên hộp thoại.
Bạn có thể sử dụng showMap()
với nhiều sự kiện nhấp chuột khác nhau và cung cấp cho nó bất kỳ URL nào bạn muốn hiển thị trong iframe
.
Tôi cũng có thể đề xuất lưu trữ URL hoặc thu thập URL từ liên kết. Ví dụ, nếu mỗi sự kiện có liên kết đến các bản đồ như:
<a class="mapLink" href="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d9927.782117587185!2d-0.1578822!3d51.5325589!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xc2ee490704162539!2sThe+Hub!5e0!3m2!1sen!2suk!4v1452460618657">Show Map</a>
Bạn có thể thu thập thông tin này và sử dụng nó như vậy:
$(".mapLink").click(function(e){
e.preventDefault();
showMap($(this).attr("href"));
});
này cũng có thể được lưu trữ trong các nút sử dụng data-map-url
như một cũng thuộc tính.
Cần thêm thông tin để cung cấp giải pháp hoàn chỉnh. Nếu tôi hiểu điều này, bạn có một bản đồ hình ảnh và khi được nhấp vào, điều này sẽ hiển thị hộp thoại chứa 'iframe' trong đó nguồn được đặt từ dữ liệu có liên quan đến sự kiện nhấp chuột. Đúng không? – Twisty