对 Flex 来说还是很新的。我正在尝试将 Google Maps JavaScript API 合并到我的 Flex 应用程序中,同时通过 ColdFusion 从数据库中提取标记数据。
该应用程序应该拉出所有就读特定学校的学生,然后通过地图上的标记显示学生。它也应该显示学校,但我还没有做到这一点。
我已经写了大部分内容,但我被困在最终可能成为简单部分的内容上。我创建了地图,并且让 CFC 提取坐标数据,但是当我尝试将数据返回到操作脚本页面时出现错误。
我收到“从 getGeoInfo 函数返回的值不是 Query 类型。” 我意识到也许我用错了returntype
,但我不确定还能用什么。
以下是 CFC 返回的示例。
28.5980179,-81.3651601;28.5383355,-81.3792365
这是我用于获取地理位置的 actionscript 函数:
/** getGeoInfo
* get the Geographical Data
*
* @param void
* @return void
*/
private function getGeoInfo():void
{
try
{
var myArgs:Object = new Object;
/* myArgs.column_list = "GeoCode, Student_Address, Student_Name_First, Student_Name_Last"; */
remotingDelegate.callCFC("getGeoInfo", myArgs);
}
catch (error:Error)
{
FlexException.errorHandler(error, "StudentPopMapModuleCode:getGeoInfo");
}
}
/**
* getGeoInfo_Handler
* The handler of the remoting call
* @param Object results The results of the remoting call
* @return void
*/
public function getGeoInfo_Handler(results:ArrayCollection):void
{
try
{
geoInfoAC = results;
}
catch (error:Error)
{
FlexException.errorHandler(error, "StudentPopMapModuleCode:getGeoInfo_Handler");
}
}
这是 mxml 页面上接收坐标的代码:
public function onMapReady(event:MapEvent):void {
map.setCenter(new LatLng(37.4419, -122.1419), 13, MapType.NORMAL_MAP_TYPE);
for each (var o:Object in geoInfoAC){
var md:MarkerData = o["markerData"] as MarkerData;
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(MapMouseEvent.CLICK,markerClicked);
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()/* ,event.inputName */);
var o:Object = MapUtils.getMarkerDataByLatAndLng(latLng.lat(),latLng.lng(),dataProvider);
if (o == null){
addMarker(markerData,marker);
}else{
o["markerData"] = markerData;
dataProvider.refresh();
}
}
任何帮助将不胜感激。