main mxml: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:maps="com.google.maps.*" layout="absolute" width="607" height="450" cornerRadius="5" paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0" viewSourceURL="srcview/index.html">
<mx:HBox id="mainHBox" width="100%" height="100%"> <mx:Canvas width="100%" height="100%"> <maps:Map3D id="map" mapevent_mappreinitialize="onMapPreinitialize(event)" key="ABQIAAAARfUuegYHZUw1LktJNnD1PBTTqoEqduWMGtkC2FyACZn_hW6uNxS0Z9KzrcFTAE3foAaNVyhuodgpFA" mapevent_mapready="onMapReady(event)" useHandCursor="true" buttonMode="true" width="100%" height="100%" top="0" left="0"/> </mx:Canvas> </mx:HBox> <!--end main Hbox--> <mx:Script> <![CDATA[ import com.lynxgeos.LynxTileLayer; import com.google.maps.interfaces.IMapType; import com.google.maps.LatLng; import com.google.maps.Map3D; import com.google.maps.MapEvent; import com.google.maps.MapOptions; import com.google.maps.MapType; import com.google.maps.View; import com.google.maps.geom.Attitude; import com.google.maps.controls.MapTypeControl; import com.google.maps.controls.NavigationControl; import com.google.maps.overlays.Marker; import com.google.maps.overlays.MarkerOptions; import com.google.maps.styles.FillStyle; import com.google.maps.styles.StrokeStyle; import mx.collections.ArrayCollection; import com.google.maps.controls.ControlPosition; import com.google.maps.controls.ZoomControlOptions; import com.google.maps.controls.ZoomControl; import com.google.maps.Map; import com.google.maps.LatLng; import com.google.maps.MapZoomEvent; import mx.collections.ArrayCollection; import com.google.maps.MapMouseEvent; import mx.controls.Alert; import com.google.maps.InfoWindowOptions; import com.google.maps.Color; import mx.events.ResizeEvent; import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; import com.google.maps.LatLng; import com.google.maps.LatLngBounds; import mx.controls.Alert; import mx.effects.easing.Exponential; import mx.core.UIComponent; import com.google.maps.MapZoomEvent; import com.google.maps.overlays.TileLayerOverlay; import com.google.maps.MapType; import com.google.maps.controls.MapTypeControl; import com.google.maps.controls.ZoomControl; import com.google.maps.controls.ControlPosition; [Bindable] public var mapTypeArray:ArrayCollection = new ArrayCollection([ {label:"Contour Map+Overlay", data:"NULL"}, {label:"Satellite Images", data:"HYBRID"}, {label:"Roads and Allotments", data:"NORMAL"} ]); public var LynxMapType:IMapType; //the new map type private function onMapPreinitialize(event:MapEvent):void { var myMapOptions:MapOptions = new MapOptions(); myMapOptions.zoom = 12; myMapOptions.center = new LatLng(56.29, 44.00); myMapOptions.mapType = MapType.NORMAL_MAP_TYPE; myMapOptions.viewMode = View.VIEWMODE_PERSPECTIVE; myMapOptions.attitude = new Attitude(20,30,0); map.setInitOptions(myMapOptions); } private function onMapReady(event:MapEvent):void { map.addControl(new NavigationControl()); map.addControl(new MapTypeControl()); var markerA:Marker = new Marker( new LatLng(56.29, 44.00), new MarkerOptions({ hasShadow: true })); //We add the TileLayerOverlay var ctl:CustomTileLayer = new CustomTileLayer("http://deer.doroga.tv/getTraficImg.php?x=|X|&y=|Y|&Level=|Z|&rnd="+Math.random()+"1"); var ctlo:TileLayerOverlay = new TileLayerOverlay(ctl); ctlo.foreground.alpha=0.8; map.addOverlay(ctlo); var xmlString:URLRequest = new URLRequest("http://i.doroga.tv/camexporter.xml"); var xmlLoader:URLLoader = new URLLoader(xmlString); xmlLoader.addEventListener("complete", readXml); } public function readXml(event:Event):void{ var markersXML:XML = new XML(event.target.data); var markers:XMLList = markersXML..marker; var markersCount:int = markers.length(); for (var i:Number = 0; i < markersCount; i++) { var marker:XML = markers[i]; var name:String = mark...@name; var address:String = 'a'; var type:String = 'b'; var htmlstring:String ='<img src="'+mark...@src+'" >"'; var latlng:LatLng = new LatLng(mark...@lat, mark...@lng); createMarker(latlng, htmlstring, name, address, type); } } public function createMarker(latlng:LatLng, htmlstring:String, name:String, address:String, type:String):void { var markerOptions:MarkerOptions = new MarkerOptions({ hasShadow: true }); var marker:Marker = new Marker(latlng, markerOptions); var html:String = htmlstring; var options:InfoWindowOptions = new InfoWindowOptions({ contentHTML:html, customOffset: new Point(0, 10), width: 360, height: 280, drawDefaultFrame: true }); marker.addEventListener(MapMouseEvent.CLICK, function(e:MapMouseEvent):void { marker.openInfoWindow(new InfoWindowOptions(options)); }); map.addOverlay(marker); } ]]> </mx:Script> </mx:Application> CustomTile.as package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; public class CustomTile extends Sprite { public var loader:Loader; private var bm:Bitmap; private var bmd:BitmapData; public function CustomTile() { loader = new Loader(); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler,false,0,true); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded,false,0,true); this.addEventListener(MouseEvent.MOUSE_MOVE,onMouseOver); } private function ioErrorHandler(event:IOErrorEvent):void { event.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function onMouseOver(evt:MouseEvent):void { bm = this.loader.content as Bitmap; bmd = new BitmapData(256, 256); bmd.draw(bm.bitmapData); var color:int = bmd.getPixel(evt.localX, evt.localY); if (color != 0xFFFFFF) { this.buttonMode=true; } else { this.buttonMode=false; } } private function loaded(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE, loaded); addChild(loader); } } } CustomTileLayer.as package { 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 flash.display.DisplayObject; import flash.events.Event; import flash.events.IOErrorEvent; import flash.geom.Point; import flash.net.URLRequest; public class CustomTileLayer extends TileLayerBase { private var srvNum:Number=0; private var staticTileServerUrl:String; private var loader:CustomTile; public function CustomTileLayer(_staticTileServerUrl:String) { staticTileServerUrl=_staticTileServerUrl; var copyrightCollection:CopyrightCollection = new CopyrightCollection(); copyrightCollection.addCopyright(new Copyright("ennefox", new LatLngBounds(new LatLng(-180, 90), new LatLng(180, -90)), 21,"ennefox")); super(copyrightCollection, 0, 23,0.7); } public override function loadTile(tile:Point,zoom:Number):DisplayObject { loader = new CustomTile(); loader.loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler,false,0,true); loader.loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded,false,0,true); var tileUrl:String = staticTileServerUrl; srvNum++; if (srvNum>3) srvNum=0; if (tileUrl.indexOf("|N|")>0) tileUrl = tileUrl.replace("|N|",srvNum); tileUrl = tileUrl.replace("|X|",tile.x); tileUrl = tileUrl.replace("|Y|",tile.y); tileUrl = tileUrl.replace("|Z|",zoom); loader.loader.load(new URLRequest(tileUrl)); return loader; } private function ioErrorHandler(event:IOErrorEvent):void { event.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function loaded(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE, loaded); } } } 2009/10/1, Nianwei <nian...@gmail.com>: > > Here is an example iof using custome tile layer: > http://gmaps-utility-library-flash.googlecode.com/svn/trunk/examples/ArcGISLink/bin-release/MultiService3D.html > > If you can be more specific and/or provide the links to 2d/3d version > with src it will be more helpful. > > > On Sep 30, 5:19 am, "@makar" <evgeni.maka...@gmail.com> wrote: >> Hello to everybody >> >> I'm trying to develop a custom tile layer overlay in Flash API and >> have a trouble: >> >> My custom tile layer works perfect in 2D flash mode but when i change >> the parameter "maps:" from Map to Map3D >> my tilelayer is not shown on the map. :( >> >> Could you help me to resolve this issue? Any how-tos or examples? >> >> Best regards >> Evgeni > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Maps API For Flash" group. To post to this group, send email to google-maps-api-for-flash@googlegroups.com To unsubscribe from this group, send email to google-maps-api-for-flash+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-maps-api-for-flash?hl=en -~----------~----~----~----~------~----~------~--~---