본문 바로가기
컴퓨터관련

Flex - GoogleMap Tile 변경해서 지도 없애기

by 기록이답이다 2016. 1. 20.
반응형
Flex를 사용하여 지도를 표시하는 프로젝트 중에 지도기능은 그대로 살리고 지도는 없애야 하는 상황이 생겼습니다. 구글맵을 이용하는데 타일만 사용하고 지도만 없애기가 되더군요.. 아래는 소스입니다. googlemap 지도타일 없애기...
public function onMapReady(event:Event):void  {
    this.setCenter(new LatLng(35.51061174942211, 127.0469068145752), 8);

    var normalMapType:IMapType = MapType.NORMAL_MAP_TYPE;
    var tileLayers:Array = normalMapType.getTileLayers().concat([]);
    tileLayers.push(new CustomTileLayer(normalMapType.getTileSize()));

    var customMapType:IMapType = 
    new MapType(tileLayers,normalMapType.getProjection(), "White");

    mc.myv.newMap.addMapType(customMapType);
    mc.myv.newMap.setMapType(customMapType);
}
  CustomTileLayer.as 파일입니다.   CustomTileLayer.as
package com.first.map
 {
 import com.google.maps.Color;
 import com.google.maps.Copyright;
 import com.google.maps.CopyrightCollection;
 import com.google.maps.LatLng;
import com.google.maps.LatLngBounds;
 import com.google.maps.TileLayerBase;
 import com.google.maps.interfaces.IMap;

import flash.display.DisplayObject;
 import flash.display.Loader;
 import flash.display.LoaderInfo;
 import flash.display.Sprite;
 import flash.events.*;
 import flash.geom.Point;
 import flash.net.URLRequest;

import mx.controls.Alert;

public class CustomTileLayer extends TileLayerBase {
 private var tileSize:Number;

/**
 * Campus tile layer constructor.
 * @param tileSize  Tile size (same horizontally and vertically).
 */
 public function CustomTileLayer(tileSize:Number) {
 var copyrightCollection:CopyrightCollection = new CopyrightCollection();
 super(copyrightCollection, 1, 20);
 this.tileSize = tileSize;
 // Add a custom copyright that will apply to the entire map layer.
 copyrightCollection.addCopyright(
 new Copyright("CustomCopyright",
 new LatLngBounds(new LatLng(-90, -180),
 new LatLng(90, 180)),
 0,
 ""));
 }

/**
 * Creates and loads a tile (x, y) at the given zoom level.
 * @param tilePos  Tile coordinates.
 * @param zoom  Tile zoom.
 * @return  Display object representing the tile.
 */
 public override function loadTile(tilePos:Point, zoom:Number):DisplayObject {
 var testLoader:Loader = new Loader();
 var z:Number = 17 - zoom;
 //   var tileUrl:String = "http://web-app.usc.edu/maps/images_3d/index.php?x=" + tilePos.x + "&y=" + tilePos.y + "&zoom=" + z;
 //   var tileUrl:String = "http://tiles.mycompany.com/tile_" +       tilePos.x + "_" + tilePos.y + "_" + zoom + ".png";
 var tileUrl:String = "../img/mappattern.png";
var urlRequest:URLRequest = new URLRequest(tileUrl);
 testLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
 testLoader.load(urlRequest);
 return testLoader;
 }

private function ioErrorHandler(event:IOErrorEvent):void {
 trace("ioErrorHandler: " + event);
 }
 }
 }
 
아래는 결과입니다.
 

 

반응형