медленный цикл на маркерах карт Google - PullRequest
2 голосов
/ 18 марта 2012

У меня есть вопрос о маркерах Google Maps и JavaScript.

У меня есть страница, на которой есть только div (map_canvas), который создает маркер при нажатии на него, и текстовое поле, в котором вы вводите имя маркера, и маркер начинает отскакивать ...

чтобы отслеживать маркеры, у меня есть массив всех добавленных маркеров. Проблема в том, что, когда он достигает 20+ маркеров, пользовательский интерфейс имеет тенденцию перестать отвечать на запросы во время зацикливания ...

вот цикл, который у меня есть, внутри функции, которая принимает идентификатор маркера в качестве параметра

for (var i=0; i < markers.length; i++) {
        if(markers[i].id == id)
        {
            if(markers[i].getAnimation() != null)
            {
                markers[i].setAnimation(null);
            }
            else
            {
                markers[i].setAnimation(google.maps.Animation.BOUNCE);
            }
        }
        else
            markers[i].setAnimation(null);
    }

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

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Я бы предложил использовать id в качестве индекса в вашем массиве markers, чтобы вы могли обращаться к каждому маркеру напрямую, а не зацикливаться, чтобы найти его. Как только у вас есть «текущий» маркер, запишите его, чтобы он знал, какой из них следует прекратить подпрыгивать при запуске следующего подпрыгивания.

var lastmarker;
...    
if (lastmarker) {markers[lastmarker].setAnimation(null)}
markers[id].setAnimation(google.maps.Animation.BOUNCE);
lastmarker=id;

Конечно, жизнеспособность этого предложения зависит от остальной части вашего кода, о котором мы ничего не знаем.

0 голосов
/ 18 марта 2012

Я бы предложил добавить шаги / точки останова в ваш код, не зная, в какой среде кодирования вы находитесь ..... если вы просто используете прямой html, я бы предложил использовать firebug для пошагового перемещения по вашему коду с использованием точек останова, так как это позволит чтобы увидеть проблему в вашем коде. Я предполагаю, что это связано с кодом.

Если вы уже сделали это, я довольно озадачен вашей проблемой относительно того, почему он просто перестал работать с 20 или более маркерами .... если это не связано с кодом, я бы рискнул предположить, что это что-то делать с API Google, как я столкнулся с некоторыми реальными странными событиями, как только вы преодолели их максимумы на некоторых вещах, хотя я не испытывал максимум на размещение маркера ранее, я сделал что-то вроде того, что вы делаете, но в среде ASP со многими больше маркеров.

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