У меня есть куча очень больших полигонов, которые я бы хотел наложить на свою карту Google. У меня есть сервер плитки, который обслуживает функции GeoJSON, а также заботится о различных геометрических операциях, которые мне необходимы, чтобы сделать работу приложения (объединение полигонов, упрощение до уровня масштабирования, черепица и т.д.).
В настоящее время мы просто показываем большие полигоны на карте в качестве слоев данных, но в идеале мы сможем отображать упрощенные версии полигонов при меньших уровнях масштабирования и увеличивать их сложность с учетом уровня масштабирования.
Мои параметры выглядят как:
1) Слои данных: подключайтесь к различным событиям изменения карты, а затем добавляйте/удаляйте их с карты (где добавление будет извлекать соответствующий фрагмент). Трудность здесь заключалась в том, что, похоже, было много событий смены карты, и найти самый гладкий способ добиться успеха может принести значительные усилия. Кроме того, мне кажется, что я работаю против API данных здесь.
2) OverlayView: аналогично выше, но как абсолютный размер OverlayView (т.е. полное покрытие). Мысль будет заключаться в том, что наложение будет прослушивать события рисования, извлекать подходящую плитку и добавлять/очищать по мере необходимости. Кажется, это было бы более предсказуемым решением, но опять-таки там много.
Я не знаю достаточно о том, как карты работают под капотом, чтобы обеспечить гораздо более глубокое понимание, но мое возможное решение (в той мере, в какой это помогает) было бы тем, что принимает URL-адрес сервера плитки, а затем подходит как плавно насколько возможно, как карты работают для загрузки правильной плитки, для правильного уровня масштабирования (и учитывая, что они являются векторными плитами, я мог бы также постепенно увеличивать/деградировать по мере изменения уровней масштабирования или изменения положения).
Может ли кто-нибудь пролить свет? Как вы подходите к нему?