Я использую карты google v3 с кластерным кластером v3 для отображения 1000-х маркеров. У меня также есть боковая панель, в которой перечислены заголовки каждого маркера. Когда пользователь наводится над заголовком в панели, я анимация соответствующего маркера, и я прекращаю анимацию на мыши.Маркеры исчезают после анимации
Это прекрасно работает, когда маркер не находится в кластере. У меня проблема, когда маркер находится в кластере.
Если маркер находится в кластере, я сначала меняю объект карты маркера с нуля (ранее заданный маркером Clusterer, чтобы скрыть маркер, когда он помещает его в кластер), к моему объекту карты, а затем я анимирую маркер. Опять же, это работает. Я нахожусь в том, что испытываю свою проблему.
В режиме мыши я установил анимацию маркера в нуль, а затем установил нужный объект карты маркера. Это делает то, что вы ожидаете (скрывает маркер), но я не могу заставить маркер показывать снова на любом последующем событии зависания. Маркер все еще существует внутри соответствующего объекта кластера, и я могу вызвать setMap(), чтобы установить свойство карты маркера, но маркер все еще не будет отображаться на карте. Вот соответствующий код:
if (event.type === 'mouseover' || event.type === 'mouseenter') {
if (!marker.getMap()) { //marker is in a cluster
inCluster = true;
marker.setMap(map)
} else {
inCluster = false
};
marker.setAnimation(google.maps.Animation.BOUNCE);
} else {
marker.setAnimation(null);
if (inCluster == true) { //hide the clusterized marker
marker.setMap(null)
}
};
Если я закомментировать две setAnimation() вызывает, то код будет работать и маркер может отображаться, а затем скрыты, как и ожидалось (только не анимированный). Кроме того, когда я играю с консолью, я могу отобразить маркер из кластера, а затем я могу его оживить, затем я смогу его деанимировать, затем я смогу скрыть его снова и снова. Но, если я вызову setMap (null) перед деанимацией маркера, я ударил свою ошибку.
Таким образом, проблема возникает только в том случае, если анимация не остановлена до вызова setMap (null). Я попытался установить таймер, чтобы дать анимации несколько сотен миллисекунд, чтобы остановиться, прежде чем вызывать setMap, и это иногда срабатывает, но в других случаях это вызывает другое, даже худшее поведение.
Любая помощь в решении этого вопроса будет принята с благодарностью (и с готовностью принята)!
Thanks dan, Эта ошибка уже сообщалась команде google maps api (выпуск № 167). Вы можете найти его здесь http://code.google.com/p/google-maps-utility-library-v3/issues/detail?id=167&colspec=ID%20Type%20Status%20Priority%20Fixed%20Owner%20Summary%20Stars –
Это все еще происходит на api v3, (3.16)! Как жизнь? – Nick