1、编辑Flex+GoogleMap中的t.mxml文件,添加如下信息(红色字体是相对于Flex+GoogleMap中的代码添加的):
![]()
![]()
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
xmlns:mx2="library://ns.adobe.com/flex/mx"
xmlns:zgflex="org.zgflex.*">
<maps:Map xmlns:maps="com.google.maps.*" id="map" mapevent_mapready="onMapReady(event)"
width="800" height="600" key="ABQIAAAAhmgrPsq0NSLkmZ286oqdZhRi_j0U6kJrkFvY4-OX2XYmEAa76BTBlTvdBgkLYeNAzGINuVlJ2uODpA"/>
<fx:Script>
<![CDATA[
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.*;/*import Google Map 的各类 class*/
import com.google.maps.controls.*
import com.google.maps.overlays.*
import com.google.maps.styles.*
import com.google.maps.MapMoveEvent;
import com.google.maps.MapMouseEvent;
import mx.controls.Alert;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import mx.managers.CursorManager;
import mx.events.ValidationResultEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.validators.Validator;
import org.zgflex.*
import mx.utils.ArrayUtil;
import mx.collections.ArrayCollection;
[Bindable]
private var dp:ArrayCollection;
private function onMapReady(event:Event):void {
map.setCenter(new LatLng(32.81163844500426,104.7087573122981), 4, MapType.NORMAL_MAP_TYPE);/* 设置地图初始中心位置 */
map.addControl( new PositionControl( new PositionControlOptions() ));/* 加入地图各类控件 */
map.addControl( new OverviewMapControl( new OverviewMapControlOptions() ) );
map.addControl( new ZoomControl( new ZoomControlOptions() ) );
map.addControl( new MapTypeControl( new MapTypeControlOptions() ) );
map.enableScrollWheelZoom();
map.enableContinuousZoom();
var citylist:Array=new Array();
var citymark:Array=new Array();
citylist.push({bw:31.155159751061156,dj:121.42727136611938});//上海南站
citylist.push({bw:31.18415020685393,dj:121.50220692157745});//上海东站
citylist.push({bw:23.116678,dj:113.206822});//广州窖口
citylist.push({bw:23.0813,dj:113.234164});//广州芳村
citylist.push({bw:32.08904667077573,dj:118.78370761871338});//南京中央门
citylist.push({bw:22.725998,dj:114.272069});//深圳龙岗
for(var i:int=0;i<citylist.length;i++)
{
var marker:Marker=new Marker(new LatLng(citylist[i].bw,citylist[i].dj),
new MarkerOptions({
fillStyle: new FillStyle({color: 0xFF3366, alpha: 0.8}),
radius: 12,
hasShadow: true
}));
citymark.push(marker);
map.addOverlay(marker);
}
citymark[0].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=true;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=false;
service.getResults.send(); //调用php webservice 服务
});
citymark[0].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=true;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=false;
});
citymark[1].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=false;
ShDZ.visible=true;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=false;
});
citymark[2].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=false;
ShDZ.visible=false;
GzJK.visible=true;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=false;
});
citymark[3].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=false;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=true;
NjZYM.visible=false;
SzLG.visible=false;
});
citymark[4].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=false;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=true;
SzLG.visible=false;
});
citymark[5].addEventListener(MapMouseEvent.CLICK,function(event:MapMouseEvent):void{
ShNZ.visible=false;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=true;
});
}
private function faultHandler(fault:FaultEvent):void //连接php webservice服务出错时会调用
{
//CursorManager.removeBusyCursor();
var errStr:String= "code:\n" + fault.fault.faultCode + "\n\nMessage:\n"+ fault.fault.faultString + "\n\nDetail:\n" + fault.fault.faultDetail;
Alert.show("Error:"+errStr);
}
private function getResultsHandler(e:ResultEvent):void //获得从php webservice服务得到的数据
{
dp= new ArrayCollection(ArrayUtil.toArray(e.result));
//Alert.show((dp.source)[0].cust_id.toString());
//this.selectedTeam.cust_id=(dp.source)[0].cust_id;
}
private function noVisible(e:Event):void
{
ShNZ.visible=false;
ShDZ.visible=false;
GzJK.visible=false;
GzFC.visible=false;
NjZYM.visible=false;
SzLG.visible=false;
}
]]>
</fx:Script>
<fx:Declarations> <!--连接php webservice服务-->
<s:RemoteObject id="service" source="GetData" destination="amfphp"
fault="faultHandler(event)" showBusyCursor="true">
<s:method name="getResults" result="getResultsHandler(event)" fault="faultHandler(event)" />
</s:RemoteObject>
</fx:Declarations>
<mx2:DataGrid x="79" y="4" width="400" id="ShNZ" visible="false" dataProvider="{dp}" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="上海南站" dataField="today_time"/>
<mx2:DataGridColumn headerText="客户ID" dataField="cust_id"/>
<mx2:DataGridColumn headerText="版本号" dataField="version_id"/>
<mx2:DataGridColumn headerText="成功次数" dataField="success_num"/>
<mx2:DataGridColumn headerText="失败次数" dataField="fail_num"/>
<mx2:DataGridColumn headerText="备注" dataField="remark"/>
</mx2:columns>
</mx2:DataGrid>
<mx2:DataGrid x="79" y="4" width="400" id="ShDZ" visible="false" dataProvider="" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="上海东站" dataField=""/>
<mx2:DataGridColumn headerText="客户ID" dataField=""/>
<mx2:DataGridColumn headerText="版本号" dataField=""/>
<mx2:DataGridColumn headerText="成功次数" dataField=""/>
<mx2:DataGridColumn headerText="失败次数" dataField=""/>
<mx2:DataGridColumn headerText="备注" dataField=""/>
</mx2:columns>
</mx2:DataGrid>
<mx2:DataGrid x="79" y="4" width="400" id="GzJK" visible="false" dataProvider="" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="广州窖口" dataField=""/>
<mx2:DataGridColumn headerText="客户ID" dataField=""/>
<mx2:DataGridColumn headerText="版本号" dataField=""/>
<mx2:DataGridColumn headerText="成功次数" dataField=""/>
<mx2:DataGridColumn headerText="失败次数" dataField=""/>
<mx2:DataGridColumn headerText="备注" dataField=""/>
</mx2:columns>
</mx2:DataGrid>
<mx2:DataGrid x="79" y="4" width="400" id="GzFC" visible="false" dataProvider="" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="广州芳村" dataField=""/>
<mx2:DataGridColumn headerText="客户ID" dataField=""/>
<mx2:DataGridColumn headerText="版本号" dataField=""/>
<mx2:DataGridColumn headerText="成功次数" dataField=""/>
<mx2:DataGridColumn headerText="失败次数" dataField=""/>
<mx2:DataGridColumn headerText="备注" dataField=""/>
</mx2:columns>
</mx2:DataGrid>
<mx2:DataGrid x="79" y="4" width="400" id="NjZYM" visible="false" dataProvider="" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="南京中央门" dataField=""/>
<mx2:DataGridColumn headerText="客户ID" dataField=""/>
<mx2:DataGridColumn headerText="版本号" dataField=""/>
<mx2:DataGridColumn headerText="成功次数" dataField=""/>
<mx2:DataGridColumn headerText="失败次数" dataField=""/>
<mx2:DataGridColumn headerText="备注" dataField=""/>
</mx2:columns>
</mx2:DataGrid>
<mx2:DataGrid x="79" y="4" width="400" id="SzLG" visible="false" dataProvider="" click="noVisible(event)">
<mx2:columns>
<mx2:DataGridColumn headerText="深圳龙岗" dataField=""/>
<mx2:DataGridColumn headerText="客户ID" dataField=""/>
<mx2:DataGridColumn headerText="版本号" dataField=""/>
<mx2:DataGridColumn headerText="成功次数" dataField=""/>
<mx2:DataGridColumn headerText="失败次数" dataField=""/>
<mx2:DataGridColumn headerText="备注" dataField=""/>
</mx2:columns>
</mx2:DataGrid>
</s:Application>
2、在googleMap目录下新建org/zgflex目录,并在其下创建LogResult.as文件,内容如下:
package org.zgflex
{
[RemoteClass(alias="org.zgflex.LogResult")] //alias别名表明在webservices端也有一个LogResult类和其对应,当连接时,通过对应的对象传递数据
[Bindable]
public class LogResult
{
public var cust_id:String;
public var today_time:String;
public var version_id:String;
public var success_num:String;
public var fail_num:String;
public var remark:String;
}
}
3、在googleMap新建文件services-config.xml,内容:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="amfphp"> <!--amfphp对应步骤一中Declarations块内的destination-->
<channels>
<channel ref="localhost-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="localhost-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost/amfphp1.9/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition><!--uri指定php webservice的gateway-->
</channels>
</services-config>
4、在Apache2工作目录编写crossdomain.xml(默认情况下为/var/www/目录),以解决Flash跨域访问问题,内容如下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
4、编译t.mxml:
mxmlc t.mxml -library-path+=map_flex_1_20.swc -locale zh_CN -services services-config.xml
5、将t.swf放入浏览器中,点击南站图标,应显示如下信息:

4013

被折叠的 条评论
为什么被折叠?



