ОК, для правильной работы я сделал три вещи.
Во-первых, я написал только один цикл for.
Во-вторых, я вызываю функцию makeMultipleMarkers второй раз после того, как прошло три секунды..
В-третьих, если я все еще получаю код состояния 500, я отправляю запрос в Google, пока не получу код состояния 500.
public function makeMultipleMarkers(destinationAllObj:Object):void {
myMarkers = [];
GlobalVars.myIcon = [];
GlobalVars.someAddress = [];
GlobalVars.sName = [];
GlobalVars.destinationInc = 0;
googleMap.getPaneManager().clearOverlays();
bounds = new LatLngBounds();
retrieveLatLngAddress = new ClientGeocoder();
retrieveLatLngAddress.addEventListener(GeocodingEvent.GEOCODING_SUCCESS, function(event:GeocodingEvent):void{
var result:Placemark = GeocodingResponse(event.response).placemarks[0];
var latLngStr:String = result.point.toString();
// GlobalVars.statusCode = event.status;
var request:URLRequest;
var imageLoader:Loader = new Loader();
if(GlobalVars.destinationInc < destinationAllObj.length)
{
imageLoader.load((destinationAllObj[GlobalVars.destinationInc].ICON == "")? request = new URLRequest("images/school_32.png") : request = new URLRequest(destinationAllObj[GlobalVars.destinationInc].ICON));
imageLoader.name = String(destinationAllObj[GlobalVars.destinationInc].ICON);
someMarker = new Marker(result.point, new MarkerOptions({
icon: imageLoader,
tooltip: destinationAllObj[GlobalVars.destinationInc].SNAME+', '+destinationAllObj[GlobalVars.destinationInc].SLOC,
hasShadow: false
}));
someMarker.addEventListener(MapMouseEvent.CLICK, function(event:MapMouseEvent):void{
directionsSteps.removeAll();
var marker:Marker = event.target as Marker;
var markerContent:String = marker.getOptions().tooltip.toString();
var firstComma:Number = markerContent.indexOf(",");
textInput.text = markerContent.substr((firstComma+2),markerContent.length);
var tempInfoWinOpts:InfoWindowOptions = new InfoWindowOptions({
content: markerContent,
width: 450
});
marker.openInfoWindow(tempInfoWinOpts);
sendSomeLatLngToSv(event.latLng);
var lastIndexOfDashStr:String = marker.getOptions().icon.name;
GlobalVars.iconObj = lastIndexOfDashStr;
var tmpArr:Array = new Array;
var tmpStr:String = event.currentTarget.getOptions().tooltip;
tmpArr = tmpStr.split(',');
GlobalVars.panoAddr[0] = tmpArr[1];
GlobalVars.sName[0] = tmpArr[0];
});
googleMap.addOverlay(someMarker);
myMarkers.push(someMarker);
GlobalVars.destinationInc++;
}
for each(someMarker in myMarkers)
{
var newLatLng:LatLng = someMarker.getLatLng();
bounds.extend(newLatLng);
}
if(destinationAllObj.length == GlobalVars.destinationInc)
{
statusTxt.text = "Complete";
var tempNum:Number = googleMap.getBoundsZoomLevel(bounds);
googleMap.setCenter(bounds.getCenter(), (tempNum), MapType.HYBRID_MAP_TYPE);
}
});
retrieveLatLngAddress.addEventListener(GeocodingEvent.GEOCODING_FAILURE, geocoderMarkersFailure);
for(GlobalVars.destinationCounter = 0; GlobalVars.destinationCounter < destinationAllObj.length; GlobalVars.destinationCounter++)
{
statusTxt.text = "Processing data, please wait...";
retrieveLatLngAddress.geocode(destinationAllObj[GlobalVars.destinationCounter].SLOC);
}
}
После того, как элементщелкнули в сетке данных района, затем подождите 3 секунды и снова вызовите функцию.Функции, аналогичные обновлению сетки данных.
public function selectedItemChanged(event:ListEvent):void
{
this.parentDocument.flexGoogleMap.directionsSteps.removeAll();
tempId = event.currentTarget.selectedItem.district_id;
this.parentDocument.passIdToRemoteGetSchoolsLocations(tempId);
setTimeout(mTimeOut, 3000);
}
public function mTimeOut():void{
this.parentDocument.passIdToRemoteGetSchoolsLocations(tempId)
}
Если возвращается код состояния 500.
public function geocoderMarkersFailure(event:GeocodingEvent):void
{
var result:Number = event.status;
statusTxt.text = "Error: "+result+" processing address, re-processing, please wait 10-25 seconds...";
GlobalVars.statusCode = result;
if(GlobalVars.statusCode == 500)
{
setTimeout(statusFiveHundred, 10000);
GlobalVars.statusCode = 0;
}
}
public function statusFiveHundred():void{
this.parentDocument.passAllDestinations();
}
this.parentDocument.passAllDestination () вызывает makeMultipleMarkers, среди прочего.
Вот URL-адрес приложения - все еще в стадии тестирования: введите описание ссылки здесь
Кстати, это приложение было сделано, чтобы моему боссу не приходилось ехать накаждая школа в Лос-Анджелесе.Таким образом, он может щелкнуть по определенному школьному округу, а затем выбрать школу рядом с крупной магистралью (шоссе, три полосы движения или две полосы движения), определить, может ли школа разместить объявление рядом с этим конкретным местом, после чего следует указать его рекламный шаг дляшкола оттуда.
Еще один BTW, почему файл .swf из папки bin-release не работает, а файл .swf из bin-debug работает?