Still kinda new to Flex. I'm trying to customize the Google Javascript API using Flex but I'm having a tough time with what I assumed would've been an easy update.
My map displays a school and all the students who live nearby. I wanted a special marker for the school and then the students can use the default red marker.
I've seen tons of pages that address this in one form or another (like how to change all the markers, or change them via JavaScript or many other formats) but nothing that just simply allows me to change 1 marker on the page to a custom icon using ActionScript/Flex (though frankly, I'd use ANY icon to differentiate it from the other markers.)
As a bonus, I'd change all the default markers to a custom one (different from the school, of course) but if not, that's ok too.
Here's what I have so far:
public function onMapReady(event:MapEvent):void {
var dojoGeo:Array = geoSchoolInfoAry;
var md:MarkerData = new MarkerData(dojoGeo[0],dojoGeo[1]);
var latlng:LatLng = new LatLng(md.lat,md.lng);
var marker:Marker= new Marker(latlng);
map.setCenter(new LatLng(dojoGeo[0],dojoGeo[1]), 11, MapType.NORMAL_MAP_TYPE);
map.addControl(new ZoomControl());
map.addControl(new MapTypeControl());
map.addControl(new ScaleControl());
addSchoolMarker(md,marker);
addStudentsToMap();
}
public function addStudentsToMap():void {
for each (var o:Object in geoInfoAC){
var latlngArray:Array = o.split(",");
var md:MarkerData = new MarkerData(latlngArray[0],latlngArray[1]);
var latlng:LatLng = new LatLng(md.lat,md.lng);
var marker:Marker= new Marker(latlng);
addMarker(md,marker);
}
}
public function addMarker(markerData:MarkerData, marker:Marker):void{
var o:Object = {markerData:markerData,marker:marker};
marker.addEventListener(InfoWindowClosedEvent.NAME,closed);
markerData.marker = marker;
map.addOverlay(marker);
dataProvider.addItem(o);
dataProvider.refresh();
}
public function closed(event:InfoWindowClosedEvent):void{
var marker:Marker = event.marker;
var latLng:LatLng = marker.getLatLng();
var markerData:MarkerData = new MarkerData(latLng.lat(),latLng.lng());
var o:Object = MapUtils.getMarkerDataByLatAndLng(latLng.lat(),latLng.lng(),dataProvider);
if (o == null){
addMarker(markerData,marker);
}else{
o["markerData"] = markerData;
dataProvider.refresh();
}
}
public function addSchoolMarker(markerData:MarkerData, marker:Marker):void{
var o:Object = {markerData:markerData,dojoMarker:marker};
marker.addEventListener(InfoWindowClosedEvent.NAME,closedSchool);
markerData.marker = marker;
map.addOverlay(marker);
dataProvider.addItem(o);
dataProvider.refresh();
}
public function closedSchool(event:InfoWindowClosedEvent):void{
var marker:Marker = event.marker;
var latLng2:LatLng = marker.getLatLng();
var markerData:MarkerData = new MarkerData(latLng2.lat(),latLng2.lng());
var o:Object = MapUtils.getMarkerDataByLatAndLng(latLng2.lat(),latLng2.lng(),dataProvider);
if (o == null){
addSchoolMarker(markerData,marker);
}else{
o["markerData"] = markerData;
dataProvider.refresh();
}
}
Thanks for any help you can provide, it's greatly appreciated!