2015-07-15 5 views
1

Есть ли способ получить уведомление, когда на экране отображается многоугольник Google Maps?Сообщите, когда загружен многоугольник

У меня есть редактируемые многоугольники с несколькими сотнями точек, и для их отображения на экране (около секунды) требуется некоторое время. Я хотел бы добавить какую-то «загрузку», а затем, когда отображается редактируемый многоугольник, скройте уведомление.

Я пробовал следующее, но поскольку на полигоне нет события load, он не работает.

  google.maps.event.addDomListener(gPolygon, 'load', function() { 
       alert("addDomListener -- LOAD"); 
      }); 
      google.maps.event.addListener(gPolygon, 'load', function() { 
       alert("addListener -- LOAD"); 
      }); 

Мой единственный вариант - установить какой-то таймер и попытаться угадать, когда отображается многоугольник.

+1

Как ты рисуешь полигон? Технически, если вы нажимаете точки, вы можете использовать обещание или обратный вызов, вам не понадобится событие. – bribeiro

+0

Просьба поделиться кодом, в котором вы создаете свой многоугольник. – MrUpsidown

ответ

1

я делал тесты, чтобы действительно длинных полигонов (125000 точек), используя следующий код:

> console.log(new Date().getTime());p.setMap(map);console.log(new Date().getTime()) 
1437051805161 
1437051805229 
< undefined 

Поскольку существует такая большая разница во времени (68 мс), по сравнению с 1 ms разница только с двумя датами, я думаю, что google.maps.Polygon.setMap является синхронным. Это означает, что можно просто запустить событие как еще один блок кода, следующий за командой setMap.

Если вы хотите, вы можете создать prototype функцию:

google.maps.Polygon.prototype.setMapListener(map, func, args){ 
    this.setMap(map); 
    func(args); 
} 
Смежные вопросы