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
-~----------~----~----~----~------~----~------~--~---