Кроме того, мне бы очень хотелось, чтобы он тоже исчезал. Мой код прямо сейчас позволяет мне делать все это, но это не так эффективно, как хотелось бы, так как страницы PHP загружаются сразу же после того, как страница загружается. Я бы хотел, чтобы страницы.php первоначально загружались, когда пользователь нажимает на точку на gmap.
Вот некоторые из моих кодов для вашего пищеварения:
<?php include("locations/clinton.php"); ?>
Я знаю, что проблема "включить" - это проблема, но она вообще не работает. Здесь jquery:
latLng: [38.763711, -76.895458],
data: "<div class='sum'><img src='images/clintonicon.png' width='144' height='144' alt='Clinton' /><p>Clinton, MD 20735<br>Churches: 0<br>Population: 36,208</p></div>",
options: {
icon: "images/clintonpin.png"
},
events: {
click: function (marker, event, context) {
$('#clinton').fadeIn('fast');
$('.overlay').fadeIn('fast');
},
mouseover: function (marker, event, context) {
var map = $(this).gmap3("get"),
infowindow = $(this).gmap3({
get: {
name: "infowindow"
}
});
if (infowindow) {
infowindow.open(map, marker);
infowindow.setContent(context.data);
} else {
$(this).gmap3({
infowindow: {
anchor: marker,
options: {
content: context.data
}
}
});
}
},
mouseout: function () {
var infowindow = $(this).gmap3({
get: {
name: "infowindow"
}
});
if (infowindow) {
infowindow.close();
}
}
}
}
Теперь я стараюсь изо всех сил решать свои проблемы самостоятельно, но когда мне нужна помощь, я прихожу сюда. Благодарим заранее, что укрывательство умывалки.
У вас есть несколько вариантов. Если вы хотите, чтобы что-то открывалось в традиционном всплывающем окне, вы можете просто использовать window.open()
и указать его на требуемый серверный ресурс. Что-то вроде этого:
click: function (marker, event, context) {
window.open('http://www.yourserver.com/locations/clinton.php');
}
Хотя из вашего комментария выше, похоже, что вы ищете что-то большее, чем AJAX-friendly. Что-то, что проявляется в большей части модального div, чем во всплывающем окне. Функция jQuery .load()
должна иметь возможность обрабатывать это с уже имеющимися элементами. Я не могу быть точным, не зная вашей разметки, но может выглядеть примерно так:
click: function (marker, event, context) {
$('#clinton').load('http://www.yourserver.com/locations/clinton.php', function () {
$('#clinton').fadeIn('fast');
$('.overlay').fadeIn('fast');
});
}
Возможно, вам придется настроить его, чтобы он соответствовал вашей разметке, но общая идея:
#clinton
(div
возможно?) Уже существует на странице, но пуст и скрыт.locations/clinton.php
содержит только разметку, которая должна находиться внутри этого элемента.Если у вас много таких элементов, DOM будет динамически наращиваться, когда пользователь нажимает на различные маркеры. Если это запустит слишком большую страницу, вы также можете удалить эти элементы по мере необходимости:
$('#clinton').empty();
Это действительно зависит от вас, как вы можете балансировать между большим количеством клиентского контента и множеством обращений AJAX к серверу для повторного получения одного и того же контента.