Как захватить страницу с помощью карты Google? - PullRequest
0 голосов
/ 02 апреля 2010

У меня есть UIComponent с картой Google на континенте. Мне нужно захватить этот контейнер для предварительного просмотра.

Моя интеграция выглядит следующим образом:

 <mx:UIComponent id="mapContainer"
        width="410"
        height="300"
    />


 googleMap = new Map();
 mapContainer.addChild(googleMap);

Но если я это сделаю («это» - мой UIComponent)

var bmd:BitmapData = new BitmapData(this.width, this.height, true, 0x00ffffff);
bmd.draw(this);

Я вижу следующее:

An ActionScript error has occurred:
SecurityError: Error #2123: Security sandbox violation: BitmapData.draw: http://localhost/ cannot access http://mt1.google.com/vt/lyrs=m@121&hl=en&src=api&x=1&y=1&z=1&s=Gali. No policy files granted access.
    at flash.display::BitmapData/draw()

Теперь я могу добавить хост к разрешенному клиенту. Но мне нужна работающая система на любом компьютере)

Я пытался это скрыть:

templateGoogleMapRenderer.mapContainer.setVisible(false);
templateGoogleMapRenderer.mapContainer.includeInLayout = false;

Но это было безуспешно.

Может быть, я могу переопределить какой-нибудь метод в моем UIComponent, который можно использовать во время BitmapData / draw ()?

Захват со скрытой картой для меня результат успеха)

Ответы [ 2 ]

1 голос
/ 02 апреля 2010

Возможно, вам придется заставить приложение проверить файл междоменной политики карт Google, прежде чем пытаться получить доступ к данным растрового изображения. Их файл междоменной политики находится здесь: maps.google.com/crossdomain.xml

Это может оказаться полезным, если вы не знаете, как заставить его проверить файл междоменной политики: http://www.abdulqabiz.com/blog/archives/2007/01/28/enabling-bitmapdatadraw-on-crossdomain-images-in-adobe-flash-player-9/

0 голосов
/ 01 апреля 2011

В Google Map Flash API есть метод с именем Map.getPrintableBitmap(). Вы не получите ошибок песочницы, если будете использовать этот метод. Пример кода:

import flash.display.BitMap;
import flash.display.BitMapData;

var bitmap:Bitmap         = googleMap.getPrintableBitmap();
var bitmapData:BitmapData = bitmap.bitmapData;

, где googleMap - ваш com.google.maps.Map объект.

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