Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- override public function getTexture(point:SphericalCoordinates, width:Number,
- height:Number):BitmapData {
- /*
- trace("______________тест________________________");
- getXForCoords(-imagesInfo.origin.longitude);//0
- getXForCoords(imagesInfo.origin.longitude);//0
- getXForCoords(1);//0
- getXForCoords(4);//1
- getXForCoords(imagesInfo.origin.longitude + 0.1);//0
- getXForCoords(-imagesInfo.origin.longitude - 0.1);//1
- trace("__________________________________________");
- */
- var uvPoint:Point = projection.sphericalToUv(point, imagesInfo.span,
- imagesInfo.origin);
- var maxSize:Size = imagesInfo.zoom.currentSize;
- var col:Number = maxSize.width / imagesInfo.tilesSize.width;
- var row:Number = maxSize.height / imagesInfo.tilesSize.height;
- trace("Sperical tile.longitude:", point.longitude);
- trace("imagesInfo.origin.longitude:", imagesInfo.origin.longitude);
- trace("imagesInfo.currentAngularSize.width:", imagesInfo.currentAngularSize.width);
- var x:int = getXForCoords(point.longitude);
- var y:int = (uvPoint.y - height / 4) * row;
- var z:uint = imagesInfo.zoom.currentLevel;
- var tileUrl:String = getHashKeyByXyz(x,y,z);
- trace("x = ", x);
- var loader:TileLoader = _loadersMap[tileUrl];
- if(loader){
- trace("Server tile.longitude", loader.sphericalCoordinates.longitude);
- var bitmap:Bitmap = Bitmap(loader.content);
- if (bitmap) {
- // обрезаем как надо
- // TODO - кэширование!!!!
- var sourceBitmapData:BitmapData = bitmap.bitmapData;
- // исходим из того что получаемый битмап лежит внутри исходного.
- // TODO: сделать объединение нескольких битмапов.
- var width0:uint = (width / loader.angularSize.width) * sourceBitmapData.width;
- var height0:uint = (height / loader.angularSize.height) * sourceBitmapData.height;
- var dLongitude:Number = AngleUtil.normRadiansTo2PI(point.longitude)
- - loader.sphericalCoordinates.longitude;
- trace("dLongitude",dLongitude);
- var dLatitude:Number = loader.sphericalCoordinates.latitude - point.latitude;
- var x0:int = dLongitude * (sourceBitmapData.width / loader.angularSize.width);
- //x0 = x0%sourceBitmapData.width;
- var y0:int = dLatitude * (sourceBitmapData.height / loader.angularSize.height);
- var sourceRect:Rectangle = new Rectangle(x0, y0, width0, height0);
- var tileBitmapData:BitmapData = new BitmapData(width0, height0);
- tileBitmapData.copyPixels(sourceBitmapData, sourceRect, _zeroPoint);
- trace("sourceRect",sourceRect);
- return tileBitmapData;
- }
- }
- else {
- loadNewTile(tileUrl, point.clone() as SphericalCoordinates, width, height);
- }
- return emptyBitmapData;
- }
- private function getXForCoords(longitude:Number):int {
- var x:Number = (longitude +0.01 + imagesInfo.origin.longitude)
- /imagesInfo.currentAngularSize.width;
- var maxSize:Size = imagesInfo.zoom.currentSize;
- var col:Number = maxSize.width / imagesInfo.tilesSize.width;
- var row:Number = maxSize.height / imagesInfo.tilesSize.height;
- if (x < 0 && int(x)== 0)
- x = (col - 1);
- /*trace("(",longitude," + ",imagesInfo.origin.longitude,")/",
- imagesInfo.currentAngularSize.width);*/
- trace("TiledTextureProvider.getXForCoords(",longitude,") = ", int(x));
- return int(x);
- }
Add Comment
Please, Sign In to add comment