It looks like it doesn't know about "play.png", do you have that?
There's a good tutorial about embedding images here: http://www.bit-101.com/blog/?p=853 - pamela On Thu, May 21, 2009 at 6:42 AM, Vitali <[email protected]> wrote: > > I have tried using Pamela's CustomIconSprite.as package > > but this is the error i get: > ----- > TypeError: Error #1007: Instantiation attempted on a non-constructor. > at CustomIconSprite() > at MarkerToggleFlash_fla::MainTimeline/createMarker() > at MarkerToggleFlash_fla::MainTimeline/readXml() > at flash.events::EventDispatcher/dispatchEventFunction() > at flash.events::EventDispatcher/dispatchEvent() > at flash.net::URLLoader/onComplete() > ---- > > > > this is the code i am using > CustomIconSprite.as > > ---- > /* > * Copyright 2008 Google Inc. > * Licensed under the Apache License, Version 2.0: > * http://www.apache.org/licenses/LICENSE-2.0 > */ > package { > > import flash.display.Sprite; > import flash.text.TextField; > import flash.text.TextFieldAutoSize; > > /** > * InfoWindowSprite is a sprite that contains sub sprites that > function as tabs. > */ > public class CustomIconSprite extends Sprite { > [Embed('play.png')] private var TestImg:Class; > > > public function CustomIconSprite(label:String) { > addChild(new TestImg()); > > var radius:int = 60; > var labelMc:TextField = new TextField(); > labelMc.autoSize = TextFieldAutoSize.LEFT; > labelMc.selectable = false; > labelMc.border = false; > labelMc.embedFonts = false; > labelMc.mouseEnabled = false; > labelMc.width = radius; > labelMc.height = radius; > labelMc.text = label; > labelMc.x = 9; > labelMc.y = 6; > addChild(labelMc); > cacheAsBitmap = true; > } > > } > > } > > ----------------- > import it into MarkerToggleFlash: > > import CustomIconSprite; > > import com.google.maps.LatLng; > import com.google.maps.LatLngBounds; > import com.google.maps.Map; > import com.google.maps.MapEvent; > import com.google.maps.MapMouseEvent; > import com.google.maps.MapZoomEvent; > import com.google.maps.MapType; > import com.google.maps.services.ClientGeocoder; > import com.google.maps.services.GeocodingEvent; > import com.google.maps.overlays.Marker; > import com.google.maps.overlays.MarkerOptions; > import com.google.maps.InfoWindowOptions; > import com.google.maps.styles.FillStyle; > //import mx.controls.Alert; > import com.google.maps.controls.ZoomControl; > > > import com.google.maps.interfaces.IProjection; > import com.google.maps.styles.StrokeStyle; > import com.google.maps.overlays.PolygonOptions; > import com.google.maps.overlays.Polygon; > import flash.events.Event; > > > > > var categories:Object = > { "airport": { > "color": 0xFF0000, > "markers": []}, > "bar": { > "color": 0x0000FF, > "markers": []} > }; > > var map:Map = new Map(); > map.key = > "ABQIAAAAkqC0hQ6ptJJ39dnGRIsUXBQ1sfgIqdZmW2O7RVNpgttTmt9J7RRncv6SxIB7wCvWAj60UFqYVaKfaQ"; > map.x = 100; > map.y = 0; > map.setSize(new Point(stage.stageWidth-100, stage.stageHeight)); > map.addEventListener(MapEvent.MAP_READY, onMapReady); > this.addChild(map); > > airportsCheckbox.addEventListener(MouseEvent.CLICK, function(e:Event) > { > toggleCategory("airport"); > }); > barsCheckbox.addEventListener(MouseEvent.CLICK, function(e:Event) { > toggleCategory("bar"); > }); > > function onMapReady(event:Event):void { > map.enableScrollWheelZoom(); > map.enableContinuousZoom(); > map.setCenter(new LatLng(30.751278, 104.501953), 4); > map.addControl(new ZoomControl()); > > var xmlString:URLRequest = new URLRequest("markers.xml"); > var xmlLoader:URLLoader = new URLLoader(xmlString); > xmlLoader.addEventListener("complete", readXml); > } > > 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 = mark...@address; > var image:String = mark...@image; > var description:String = mark...@description; > var articlelink:String = mark...@articlelink; > var type:String = mark...@type; > var latlng:LatLng = new LatLng(mark...@lat, mark...@lng); > createMarker(latlng, name, address, image, description, > articlelink, type); > } > drawCircle(30.751278, 104.501953, 200.0, 0x000080, 1, 0.75, 0x0000FF,. > 2); > } > > > > function createMarker(latlng:LatLng, name:String, address:String, > image:String, description:String, articlelink:String, > type:String):void { > > //original marker > /* > var markerOptions:MarkerOptions = new MarkerOptions({}); > var fillStyle:FillStyle = new FillStyle({color: categories > [type].color}); > markerOptions.fillStyle = fillStyle; > */ > > // new custom marker from CustomIconSpriteDemo.mxml > var markerOptions:MarkerOptions = new MarkerOptions({icon: new > CustomIconSprite("a")}); > > > // continue original code > var marker:Marker = new Marker(latlng, markerOptions); > var html:String = "<a href='http://www.google.com' > target='_blank'>link test</a><br /><img src=\"http://maps.google.com/ > help/maps/edit/images/marker-noalpha.png\">" + image + "<br /><b>" + > name + "</b> <br />" + description + "<br />" + address + "<br /><br / >><a href=" + articlelink + "><b>Read More</b></a>"; > marker.addEventListener(MapMouseEvent.CLICK, function > (e:MapMouseEvent):void { > marker.openInfoWindow(new InfoWindowOptions({contentHTML:html})); > }); > categories[type].markers.push(marker); > map.addOverlay(marker); > } > > function toggleCategory(type:String):void { > for (var i:Number = 0; i < categories[type].markers.length; i++) { > var marker:Marker = categories[type].markers[i]; > if (!marker.visible) { > marker.visible = true; > } else { > marker.visible = false; > } > } > } > > > function drawCircle(lat:Number, lng:Number, radius:Number, > strokeColor:Number, strokeWidth:Number, strokeOpacity:Number, > fillColor:Number, fillOpacity:Number):void { > var d2r:Number = Math.PI/180; > var r2d:Number = 180/Math.PI; > var circleLat:Number = radius * 0.014483; // Convert statute > miles into degrees latitude > var circleLng:Number = circleLat/Math.cos(lat*d2r); > var circleLatLngs:Array = new Array(); > for (var i:Number = 0; i < 33; i++) { > var theta:Number = Math.PI * (i/16); > var vertexLat:Number = lat + (circleLat * Math.sin(theta)); > var vertexLng:Number = lng + (circleLng * Math.cos(theta)); > var latLng:LatLng = new LatLng(vertexLat, vertexLng); > circleLatLngs.push(latLng); > } > > var polygonOptions:PolygonOptions = new PolygonOptions(); > var fillStyle:FillStyle = new FillStyle(); > fillStyle.alpha = fillOpacity; > fillStyle.color = fillColor; > polygonOptions.fillStyle = fillStyle; > > var strokeStyle:StrokeStyle = new StrokeStyle(); > strokeStyle.alpha = strokeOpacity; > strokeStyle.color = strokeColor; > strokeStyle.thickness = strokeWidth; > polygonOptions.strokeStyle = strokeStyle > > var polygon:Polygon = new Polygon(circleLatLngs, > polygonOptions); > map.addOverlay(polygon); > } > > > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-maps-api-for-flash?hl=en -~----------~----~----~----~------~----~------~--~---
