Actionscript 3 Google使用ColdFusion CFC&;在Flex应用程序中映射JavaScript API;SQL Server以获取地址
对Flex来说还是很新的。我试图将GoogleMapsJavaScriptAPI合并到我的Flex应用程序中,同时通过ColdFusion从数据库中提取标记数据 该应用程序应该将所有就读于某一特定学校的学生拉出来,然后通过地图上的标记显示这些学生。它还应该展示学校,但我还没讲到 我已经写了大部分,但我被一个简单的部分卡住了。我创建了地图,让CFC提取坐标数据,但是当我试图将数据返回到动作脚本页面时,会出现错误 我得到了“getGeoInfo函数返回的值不是查询类型。”我意识到可能我使用了错误的Actionscript 3 Google使用ColdFusion CFC&;在Flex应用程序中映射JavaScript API;SQL Server以获取地址,actionscript-3,apache-flex,google-maps,coldfusion,cfc,Actionscript 3,Apache Flex,Google Maps,Coldfusion,Cfc,对Flex来说还是很新的。我试图将GoogleMapsJavaScriptAPI合并到我的Flex应用程序中,同时通过ColdFusion从数据库中提取标记数据 该应用程序应该将所有就读于某一特定学校的学生拉出来,然后通过地图上的标记显示这些学生。它还应该展示学校,但我还没讲到 我已经写了大部分,但我被一个简单的部分卡住了。我创建了地图,让CFC提取坐标数据,但是当我试图将数据返回到动作脚本页面时,会出现错误 我得到了“getGeoInfo函数返回的值不是查询类型。”我意识到可能我使用了错误的r
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();
}
}
任何帮助都将不胜感激 结果表明,因为它被视为字符串,所以我需要按每个坐标拆分数组。我用了下面的方法,效果很好 处理程序已更新为:
public function getGeoInfo_Handler(results:String):void {
try { geoInfoAC = new ArrayCollection(results.split(";"));
然后在我使用的实际mxml页面上:
public function onMapReady(event:MapEvent):void {
map.setCenter(new LatLng(28.5383355,-81.3792365), 11, MapType.NORMAL_MAP_TYPE);
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);
希望这对别人有帮助 我可能错过了一些东西,但是getGeoInfo没有返回任何东西getGeoInfo远程调用getGeoInfo.cfc,这返回了一个名为getInfo的变量,返回的查询类型为:返回值为28.5980179,-81.3651601;28.5383355,-81.3792365. 不幸的是,我的过程需要一个ArrayCollection,它无法转换28.5980179,-81.3651601;28.5383355,-81.3792365到AC,但我不确定要使用什么returntype以及如何相应地更新处理程序。我将returntype更改为String,函数处理程序现在是:public function getGeoInfo_handler(results:String):void,这似乎已经修复了错误,但是我不确定为什么mxml页面上的函数没有选择getInfoAC。因此,尽管将其更改为string,该函数仍需要值作为数字,以便将它们转换为经度和纬度的坐标。我不确定如何/在何处进行此更改。另外,在将它们输入阵列之前是否应该更改它们?After?结果表明,因为它被视为字符串,所以我需要按每个坐标拆分数组。我用了下面的方法,效果很好。公共函数onMapReady(event:MapEvent):void{map.setCenter(new-LatLng(28.5383355,-81.3792365),11,MapType.NORMAL_-map_-TYPE);对于每个(var o:geoInfoAC中的对象){var-latlngaray:Array=o.split(,“”);var-md:MarkerData=new-MarkerData(latlngaray[0],latlngaray[1]);var-LatLng:LatLng=new LatLng(md.lat,md.lng);var标记:标记=新标记(latlng);添加标记(md,标记);