/src/com/google/maps/extras/planetary/MarsTileLayer.as

http://gmaps-utility-library-flash.googlecode.com/ · ActionScript · 77 lines · 51 code · 9 blank · 17 comment · 7 complexity · 8afaa1c9ede2e72bbcf3010a71469b66 MD5 · raw file

  1. /*
  2. * Copyright 2008 Google Inc.
  3. * Licensed under the Apache License, Version 2.0:
  4. * http://www.apache.org/licenses/LICENSE-2.0
  5. */
  6. package com.google.maps.extras.planetary {
  7. import com.google.maps.CopyrightCollection;
  8. import com.google.maps.TileLayerBase;
  9. import flash.display.DisplayObject;
  10. import flash.display.Loader;
  11. import flash.events.*;
  12. import flash.geom.Point;
  13. import flash.net.URLRequest;
  14. /**
  15. * @private
  16. */
  17. public class MarsTileLayer extends TileLayerBase {
  18. private var _baseUrl:String;
  19. /**
  20. * Constructor for the class.
  21. */
  22. public function MarsTileLayer(baseUrl:String, copyrightCollection:CopyrightCollection, zoomLevels:Number) {
  23. super(copyrightCollection, 0, zoomLevels);
  24. this._baseUrl = baseUrl;
  25. }
  26. /**
  27. * Creates and loads a tile (x, y) at the given zoom level.
  28. * @param tilePos Tile coordinates.
  29. * @param zoom Tile zoom.
  30. * @return Display object representing the tile.
  31. */
  32. public override function loadTile(tilePos:Point, zoom:Number):DisplayObject {
  33. var bound:Number = Math.pow(2, zoom);
  34. var x:Number = tilePos.x;
  35. var y:Number = tilePos.y;
  36. var quads:Array = ['t'];
  37. for (var z:Number = 0; z < zoom; z++) {
  38. bound = bound / 2;
  39. if (y < bound) {
  40. if (x < bound) {
  41. quads.push('q');
  42. } else {
  43. quads.push('r');
  44. x -= bound;
  45. }
  46. } else {
  47. if (x < bound) {
  48. quads.push('t');
  49. y -= bound;
  50. } else {
  51. quads.push('s');
  52. x -= bound;
  53. y -= bound;
  54. }
  55. }
  56. }
  57. var testLoader:Loader = new Loader();
  58. var urlRequest:URLRequest = new URLRequest(
  59. this._baseUrl + quads.join("") + ".jpg");
  60. testLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  61. testLoader.load(urlRequest);
  62. return testLoader;
  63. }
  64. private function ioErrorHandler(event:IOErrorEvent):void {
  65. trace("ioErrorHandler: " + event);
  66. }
  67. }
  68. }