Получить страницу для загрузки в виде всплывающего окна, когда пользователь нажимает на точку на gmap3

0

Кроме того, мне бы очень хотелось, чтобы он тоже исчезал. Мой код прямо сейчас позволяет мне делать все это, но это не так эффективно, как хотелось бы, так как страницы 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();
            }
        }
    }
}

Теперь я стараюсь изо всех сил решать свои проблемы самостоятельно, но когда мне нужна помощь, я прихожу сюда. Благодарим заранее, что укрывательство умывалки.

  • 2
    Чтение кода становится намного проще благодаря случайному возврату каретки и отступу ...
  • 0
    Да, спасибо, что сделал это для меня. Я слишком привык читать это клаустрофобно. Изучая первоначальный вопрос, который у меня возник, я все еще не могу понять, как решить эту конкретную проблему. Я инициализирую некоторый AJAX? Я уверен, что это решение, возможно, но я не уверен, как реализовать его в gmap. Было бы хорошо, если бы это был простой jquery .ajax или .load. Но что-то в gmap не позволяет ему делать свое дело, или, может быть, я угадываю совершенно неправильное решение. Таким образом, я прихожу сюда в поисках ответа в разуме всех вас. Спасибо за ваш вклад.
Теги:
popup
jquery-gmap3

1 ответ

0
Лучший ответ

У вас есть несколько вариантов. Если вы хотите, чтобы что-то открывалось в традиционном всплывающем окне, вы можете просто использовать 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 к серверу для повторного получения одного и того же контента.

  • 0
    Стань! Большое спасибо! AJAX-дружественный код работал как шарм! У вас есть больше, чем моя огромная благодарность, которую я даже не знаю, что это такое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню