Щелчок маркера Google Maps API v3 не работает

не уверен, в чем проблема, несколько месяцев назад я создал карту Google с пользовательскими маркерами, используя v3 API. тогда информационные окна работали.

я переносил его на новый сайт и не могу открыть информационное окно, js предупреждает в нужной точке при создании события щелчка, но событие щелчка не срабатывает, все, что я могу сделать, это перетащить карту, поэтому я посмотрел на последний сайт, который я сделал, и сейчас он там тоже не работает.

поэтому не знаю, как это исправить, код, который мне нужно создать для информационного окна, выглядит следующим образом:

markersArray.push(marker);
        markersPosArray.push(myLatLng);
        // Wrapping the event listener inside an anonymous function
        // that we immediately invoke and passes the variable i to.
        (function(myData, marker) {
            alert('creating listener for: '+marker);
            // Creating the event listener. It now has access to the values of
            // myData and marker as they were during its creation
            google.maps.event.addListener(marker, 'click', function() {
                //create thecontent for the infowindow
                alert('creating info window');
                var content = 'hello there'; //createContent(myData);
                infowindow.setContent(content);
                infowindow.open(map, marker);
            });


        })(myData, marker); 

может быть, что-то изменилось в API, что я не знаю?

тестовую страницу можно увидеть по адресу: http://www.disposalknowhow.com/locator.php. локатор использует следующее для получения результатов:

тип: электрика/электроника - предмет: компьютеры - радиус: 100 - почтовый индекс: n11hl

предыдущий, который я сделал, тоже не работает, теперь его можно увидеть по адресу: http://www.focus-on-plants.com/locator_iconed.php (здесь в форме можно использовать любые параметры)

ОБНОВИТЬ:

в ответ на treffys ответ:

информационное окно определяется, когда я создаю карту:

var myLatLng = new google.maps.LatLng(51.470, -0.00);
    var bounds = new google.maps.LatLngBounds();
    var geocoder = new google.maps.Geocoder();
    var gotIcons = false;
    var iconImageArray = {image:{}, size:{}, sizeX:{}, sizeY:{}, origin:{}, originX:{}, originY:{}, anchorpoint:{}, anchorpointX:{}, anchorpointY:{}};
    var iconShadowArray = {image:{}, size:{}, sizeX:{}, sizeY:{}, origin:{}, originX:{}, originY:{}, anchorpoint:{}, anchorpointX:{}, anchorpointY:{}};
    var iconShapeArray = {poly:{}, coord:{}};
    var myIconArray = {icon:{}, shadow:{}, shape:{}}
    var infowindow = new google.maps.InfoWindow();
    var markersArray = []; // to store out markers
    var markersPosArray = []; // to store lat/lang of markers for zooming function
    var markersInfoArray = [];
    // MAP OPTIONS
    var myOptions = {
        zoom: 5,
        center: myLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: true,
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
            position: google.maps.ControlPosition.BOTTOM
        },
        navigationControl: true,
        navigationControlOptions: {
            style: google.maps.NavigationControlStyle.ZOOM_PAN,
            position: google.maps.ControlPosition.TOP_RIGHT
        },
        scaleControl: true,
        scaleControlOptions: {
            position: google.maps.ControlPosition.TOP_LEFT
        }
    };//end map options
    var map = new google.maps.Map(document.getElementById("loc_map"), myOptions);

person Dizzy Bryan High    schedule 21.03.2011    source источник
comment
Откуда берется переменная infowindow в обратном вызове события клика?   -  person Treffynnon    schedule 21.03.2011
comment
хм, это хороший вопрос, я думаю, вы нашли мою ошибку, я попробую ваш код ниже и отчитаюсь, спасибо   -  person Dizzy Bryan High    schedule 21.03.2011
comment
проверил скрипт, и информационное окно определяется, когда я создаю карту, см. Мое обновление в вопросе   -  person Dizzy Bryan High    schedule 21.03.2011
comment
кажется, работает на основе кода вашего сайта jsfiddle.net/kjy112/4fZbF   -  person KJYe.Name 葉家仁    schedule 21.03.2011


Ответы (1)


Я использую следующий код для отображения информационного пузыря:

var info_pane = new google.maps.InfoWindow({
                    content: info,
                    disableAutoPan: false,
                    maxWidth: '300px'
                });
info_pane.open(map, marker);
person Treffynnon    schedule 21.03.2011
comment
вместо этого пробовал использовать этот код, но информационное окно по-прежнему отсутствует, оно предупреждает, что прослушиватель создается для каждого значка - person Dizzy Bryan High; 21.03.2011
comment
Хм... Я не уверен. Я не могу дать вам ссылку на сайт, на котором я использую этот код, так как, к сожалению, он еще не запущен. Глядя на ваш код, ничего сразу не выскакивает. - person Treffynnon; 21.03.2011
comment
я тоже застрял, как я сказал, код работал, когда я делал сайт несколько месяцев назад, который теперь не показывает информационное окно, никаких ошибок не генерируется, так что трудно понять, где искать, предупреждение непосредственно перед созданием on- щелчок работает, поэтому я думаю, что проблема где-то внутри прослушивателя onclick, но код выглядит нормально для меня... - person Dizzy Bryan High; 21.03.2011
comment
@Dizzy на самом деле вам не нужно использовать закрытие для события onclick, вы можете просто установить infowindow.open(map, this); и удалить закрытие jsfiddle .net/kjy112/4fZbF - person KJYe.Name 葉家仁; 21.03.2011