Этот вид интерфейса кажется сложным для реализации, но это всего лишь некоторые математические приемы. Если вы решили реализовать свой собственный алгоритм, попробуйте это:
- Возьмите полное изображение и создайте плитки в разных масштабах и, следовательно, с разной глубиной.
- Пользователь начинает смотреть на сцену в реальном масштабе, составленной из 16 плиток, созданных из исходной сцены.
Если пользователь перетаскивает, все плитки перемещаются одинаково. Если пользователь увеличивает масштаб, все плитки увеличиваются.
- Если пользователь масштабирует больше X, вы меняете 16 плиток на их 16 дочерних плиток! Понял? Чем выше зум, тем выше детализация. Чтобы не иметь 36000 плиток одновременно, генерируйте с разной глубиной и переключайте их на лету.
Вам просто нужно загрузить и переместить плитки. Умножьте плитку x, y, width, height на увеличение. Держите фокус сцены в положении мыши. Взгляните на этот пример . Это делает именно шаги, описанные выше, но с большим количеством микроскопических изображений. Это та же самая идея карт Google.