Рисование подпредставления поверх карты Google, отображаемой в WebView в OSX - PullRequest
2 голосов
/ 15 декабря 2011

Я пытаюсь создать простую утилиту в OSX, которая отображает карту Google в WebView и отображает некоторые виды поверх нее. Для большинства веб-сайтов, включая ссылки на maps.google.com, подпредставления отображаются поверх веб-представления. Милая. Но если я использую Google Maps API v3, по какой-то причине содержимое карты будет отображаться поверх моих подпредставлений.

Вот пример:

У меня есть окно с двумя подпредставлениями, WebView и NSButton. Порядок таков, что кнопка должна быть сверху. Я поместил кнопку так, чтобы половина ее находилась над WebView, чтобы сделать пример более понятным.

Если я загружу

maps.google.com/maps?q=-33.86818,+151.1963

... в верхней части окна появляется кнопка:

http://dl.dropbox.com/u/22329586/1_webviewproblem_works.png

Но если я загружу это демо Google

gmaps-samples-v3.googlecode.com/svn/trunk/draggable-directions/draggable-directions.html

... который использует API Google Map v3, он отображает поверх содержания:

http://dl.dropbox.com/u/22329586/2_webviewproblem_doesnt_work.png

(Извините, мне не хватает очков репутации для размещения изображений в строке)

Есть идеи?

1 Ответ

3 голосов
/ 15 декабря 2011

попробуйте установить [view setWantsLayer:YES] как для просмотра, так и для просмотра.Это может помочь.

небольшая заметка, почему это помогает:

Документы Cocoa гласят:

По соображениям производительности, Какао не налагает ограничения на одноуровневые представлениягарантировать правильную аннулирование и поведение при рисовании, когда родственные виды перекрываются.Если вы хотите, чтобы вид был нарисован перед другим видом, вы должны сделать вид спереди подпредставлением (или потомком) вида сзади.

, если вы используете NSViews без включенной поддержки слоев setWantsLayer:YES и одним из представлений иногда является резервное копирование слоев или хостинг слоев или представление OpenGL, оно будет отображаться поверх всех других.

но когда вы включаете резервное копирование слоев в представлениях, все они рисуются в иерархии CALayer, которая поддерживаетперекрытия.

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