Ошибка Javascript: Uncaught ReferenceError: marker1 не определен

Я использую следующий код, чтобы маркер на карте менялся, когда пользователь наводит указатель мыши на div. Marker1 определяется в initialize() следующим образом:

var marker1 = new google.maps.Marker({  

                position: new google.maps.LatLng(1.288693,103.846733),

                map: map,

                icon: "http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|c41200|ffffff"

            });

функция onmouseover:

function changeMarker(marker) {
            var icon = new Google.maps.MarkerImage({ url:"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=1|ffffff|c41200"});
            marker.setIcon(icon);
        }

и div:

<div id="searchresult" onmouseover="changeMarker(marker1)">

Я получаю ту же ошибку: Uncaught ReferenceError: marker1 не определен

Попытка 2

Я попытался добавить следующую строку вне функции initialize()

var marker1;

и я получаю сообщение об ошибке: Uncaught ReferenceError: Google не определен

Мой javascript не очень хорош, я где-то ошибся?


person Nyxynyx    schedule 19.05.2011    source источник
comment
Кажется, ваш файл JavaScript карты Google загружен неправильно, проверьте текущие настройки браузера или попробуйте его в другом браузере.   -  person MUS    schedule 19.05.2011


Ответы (1)


Если вы добавили var marker1; вне функции initialize(), убедитесь, что у вас все еще нет var при использовании marker1 внутри функции initialize().

Помещая var marker1; вне функции, вы даете переменной marker1 глобальную область видимости. Если вы также включите var внутри функции initialize(), она создаст другую локальную переменную (с областью действия функции), и использование внутри обработчика onmouseover div не будет указывать на то, что вы ожидаете.

Кроме того, ошибка Google, вероятно, заключается в том, что вы написали ее с большой буквы. В вашей функции инициализации google в нижнем регистре.

person Kyle    schedule 19.05.2011
comment
Отлично, ошибка Google исчезла! Теперь я получаю сообщение об ошибке: GET localhost/mysite/places/[object%20Object] ошибка 400, неверный запрос) - person Nyxynyx; 19.05.2011
comment
отлично я решил это! Я избавился от значка var и поместил URL-адрес прямо в marker.setIcon(). Я не уверен, почему это работает, хотя... - person Nyxynyx; 19.05.2011
comment
@Nyxynyx В документации API говорится, что Marker.setIcon может принимать либо строку, либо MarkerImage. Я не говорю, что строка должна быть URL-адресом, но, похоже, это так. - person Kyle; 19.05.2011