Jquery Google Maps Проблема - PullRequest
       9

Jquery Google Maps Проблема

1 голос
/ 11 апреля 2010

Вот проблема:

Допустим, кнопка переключения Jquery загружает карту Google по запросу и скрывает ее позже при переключении:

 $('#showmeMap').toggle(function() 
 {
   var map = new GMap2($("#map").get(0));
   var mapCenter = new GLatLng(-2, 20);
   map.setCenter(mapCenter, 12);
   $('#map').show();
 }
 }, function() {
$('#map').hide();
 });

Затем я добавляю несколько случайных маркеров, а затем еще одну функцию, которая удаляет маркеры с карты:

 $('#destroyMarkersButton').click(function() {
    for (var i=0; i<gmarkers.length; i++) 
    {
    map.removeOverlay(gmarkers[i]);
    }
  });   

При нажатии на кнопку я получил ошибку. Карта не определена. Я думал, что определяю объект Google Map глобально:

  map = new GMap2($("#map").get(0));

Что отлично работает в Firefox, однако карта не загружается в Internet Explorer !!

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2010

Оберните оба в функцию, чтобы вы могли добраться до map через замыкание (они должны быть уже в любом случае, потому что вы должны делать document.ready на них):

$(function()
{
    var map;
    $('#showmeMap').toggle(function() 
    {
        map = new GMap2($("#map").get(0));
        // ...
    });

    $('#destroyMarkersButton').click(function() {
        // ...
    });
});

Или, вы можете определить своего рода пространство имен (обычно у меня есть библиотека для этого, которая делает это рекурсивно, а не напрямую, как это):

if (window.myApp === undefined)
    window.myApp = {};
var appNS = window.myApp;

Затем вы можете с уверенностью использовать это пространство имен, чтобы оно выдерживало всю страницу, поскольку оно напрямую связано с window:

$('#showmeMap').toggle(function() 
{
    appNS.map = new GMap2($("#map").get(0));
    // ...
});

и т. Д.

0 голосов
/ 11 апреля 2010

Хорошо, ответ на вопрос .. кажется, что идентификатор конфликтует с именем переменной в IE ... lol

Просто изменил идентификатор на # mapContainer

Проблема решена,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...