ArcGIS Api For Flex 动态画点和线(2)

2024-03-05 00:18
文章标签 动态 arcgis api flex 画点

本文主要是介绍ArcGIS Api For Flex 动态画点和线(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过webservicesflex交互取得数据库中的gps坐标动态显示在地图上。

 

 

1.建立数据库:

 

 

2.建立webservices:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.OleDb;
using System.Data;

 

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//
若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。

// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
    public Service () {

 

       //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

 

    [WebMethod]
    public string HelloWorld() {
        return “Hello World”;
    }
    [WebMethod]
    public string GetGPS()
    {
        DataSet myDS;
        string strtemp = string.Empty;
        string myConStr =@”Provider=Microsoft.ACE.OLEDB.12.0;DataSource=D:databaseforgpsDatabase1.accdb;”;
        OleDbConnection myCon = newOleDbConnection(myConStr);
        try   //
异常处理语句

        {
           myCon.Open();
            stringcomStr = “Select * from gps”;
           OleDbDataAdapter myAD = new OleDbDataAdapter(comStr, myCon);
             myDS =new DataSet();
           myAD.Fill(myDS, “gps”);
        }
        catch (OleDbException oe)
        {
            throw oe;
        }
        finally
        {
            //
如果Connection是打开的,则关闭
            if(myCon.State == ConnectionState.Open)
               myCon.Close();
        }
        for (int i = 0; i <myDS.Tables[0].Rows.Count; i++)
        {
            strtemp +=myDS.Tables[0].Rows[i]["X"].ToString() + “,” +myDS.Tables[0].Rows[i]["Y"].ToString()+”/”;
        }
        return strtemp;
    }
   
}
3.
编写flex代码:

 

<?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/mx”xmlns:supportClasses=”com.esri.ags.skins.supportClasses.*” minWidth=”955″minHeight=”600″ xmlns:esri=”
http://www.esri.com/2008/ags

      initialize=”init()”
      >    
 <fx:Script>
  <![CDATA[
   import com.esri.ags.Graphic;
   import com.esri.ags.SpatialReference;
   importcom.esri.ags.components.supportClasses.InfoSymbolWindow;
   import com.esri.ags.geometry.MapPoint;
   import com.esri.ags.geometry.Polyline;
   import com.esri.ags.layers.GraphicsLayer;
   import com.esri.ags.symbols.InfoSymbol;
   import com.esri.ags.symbols.SimpleLineSymbol;
   import com.esri.ags.symbols.SimpleMarkerSymbol;
   import com.esri.ags.symbols.Symbol;
   
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.soap.WebService;
   private var arr:Array=new Array();
   private var arr2:Array = new Array();
   private var polyine:Polyline=new Polyline();
   private var graphicsLayer:GraphicsLayer=new GraphicsLayer();
   private var graphicsLayertxt:GraphicsLayer=newGraphicsLayer();
   private var grahpic:Graphic=new Graphic();
   private var grahpictxt:Graphic=new Graphic();
   private var strws:String=new String();
   
   private function init():void
   {
    graphicsLayer.add(grahpic);
    Map.addLayer(graphicsLayer);
    graphicsLayertxt.add(grahpictxt);
    Map.addLayer(graphicsLayertxt);
   }     
   private function PlayPoint(e:MouseEvent):void
   {
       var ws:WebService = new WebService();
    ws.loadWSDL("
http://localhost/gps/Service.asmx?wsdl
");
    ws.addEventListener(FaultEvent.FAULT,onFAULT);
    ws.addEventListener(ResultEvent.RESULT,onRESULT);
    ws.GetGPS();
    
   }
   private function PlayLine(e:MouseEvent):void
   {
    
    polyine=new Polyline();
    var i:int=0;
    var timer:Timer = new Timer(1000, arr.length-1);
    timer.addEventListener(TimerEvent.TIMER, TimerMethod);
    timer.start();
    function TimerMethod(event:TimerEvent):void
    {
     var mps:Array=new Array;
     var mpStat:MapPoint=arr[i] as MapPoint;
     var mpEnd:MapPoint=arr[i+1] as MapPoint;
     mps.push(mpStat);
     mps.push(mpEnd);
     polyine.addPath(mps);
       
     grahpic=new Graphic(polyine,sls);
     
     graphicsLayer.add(grahpic);
     i=i+1;
    }
   }
   internal function onFAULT(evt:FaultEvent):void
   {
      Alert.show(evt.fault.faultDetail.toString());
   }
   internal function onRESULT(evt:ResultEvent):void
   {
      //Alert.show(evt.result.toString());
    strws=evt.result.toString();
    arr2=strws.split(“/”);
    for(var j:int=0;j<arr2.length-1;j++)
       {
     varx:String=arr2[j].toString().substr(0,arr2[j].toString().indexOf(“,”));
     vary:String=arr2[j].toString().substr(arr2[j].toString().indexOf(“,”)+1,arr2[j].toString().length-x.length);
     var X:Number = Number(x);
     var Y:Number = Number(y);
     var pt:MapPoint = new MapPoint(X,Y,newSpatialReference(5326));
     arr.push(pt);
     //Alert.show(Y.toString());
    
    }
    
    graphicsLayer.clear();
    var i:int=0;
    var timer:Timer = new Timer(1000, arr.length-1);
    var tmp:MapPoint=arr[i] as MapPoint;
    Map.zoom(-10,tmp);
    timer.addEventListener(TimerEvent.TIMER, TimerMethod);
    timer.start();
    function TimerMethod(event:TimerEvent):void
    {
     var mps:Array=new Array;
     var mpStat:MapPoint=arr[i] as MapPoint;
     
     
     grahpic=new Graphic(mpStat,sps);
     var dt:Date = new Date();
     
     txts.text=”xxx”+”
于:
”+dt.fullYear.toString()+”-”+(dt.month+1).toString()+”-”+dt.date.toString()+”“+dt.hours.toString()+”:”+dt.minutes.toString()+”:”+dt.seconds.toString();
     grahpictxt = new Graphic(mpStat,txts);
     graphicsLayertxt.add(grahpictxt);
     graphicsLayer.add(grahpic);
     Map.centerAt(mpStat);
     i=i+1;
    }
     
   }
     

 

  ]]>
 </fx:Script>
 <fx:Declarations>
  
  <!–
将非可视元素(例如服务、值对象)放在此处
–>
  <!–<s:WebService id=”ws” wsdl=”
http://localhost/gps/Service.asmx?wsdl
“  useProxy=”false”>
   <s:operation name=”GetGPS” fault=”">
  
   </s:operation>

 

  </s:WebService>–>

 

  <esri:SimpleLineSymbolid=”sls”
          width=”3″
          color=”0x00FF00″/>
  <esri:SimpleMarkerSymbol id=”sms”
         color=”0x00FF00″
         size=”12″
         style=”square”/>
  <esri:PictureMarkerSymbol id=”sps” source=”
http://localhost/Red_glow.swf
“  width=”20″ height=”20″ />
  <esri:TextSymbol id=”txts” backgroundColor=”0x00FF00″ color=”0xFF0000″/>

 

 
 </fx:Declarations>
 <esri:Map id=”Map” >
  <esri:ArcGISTiledMapServiceLayer
   url=”
http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaCities_Community_BaseMap_ENG/ShenYang_Community_BaseMap_ENG/MapServer”/
>
  <!–<esri:ArcGISDynamicMapServiceLayer url=”
http://218.60.144.97:8080/RemoteRest/services/LN_SL/MapServer”/>–>

 

 </esri:Map>
 
 
 <mx:ControlBar  width=”100%” top=”0″ left=”0″ paddingTop=”0″paddingBottom=”0″   horizontalAlign=”left” >
  <mx:Button label=”
开始点轨迹
”  width=”100″ fontSize=”12″click=”PlayPoint(event)”/>
  <mx:Button label=”
开始线轨迹
”  width=”100″ fontSize=”12″click=”PlayLine(event)”/>
 </mx:ControlBar>

 

 
</s:Application>

 

这篇关于ArcGIS Api For Flex 动态画点和线(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774721

相关文章

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

基于Nacos实现SpringBoot动态定时任务调度

《基于Nacos实现SpringBoot动态定时任务调度》本文主要介绍了在SpringBoot项目中使用SpringScheduling实现定时任务,并通过Nacos动态配置Cron表达式实现任务的动... 目录背景实现动态变更定时机制配置化 cron 表达式Spring schedule 调度规则追踪定时

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动