用trace函数实现互动地图后台快速标注地名

函数|后台

   在上一讲中我们介绍了通过调用外部XML文件实现了地名的显示。在这一讲中,我们讲解如何通过Flash ActionScript代码的trace函数实现互动地图后台快速标注地名的工作。

   了解trace函数

   首先我们了解一下trace函数;
   我们可以使用 Flash 调试播放器捕获来自 trace() 函数的输出并显示结果。在测试 SWF 文件时,使用此语句可在"输出"面板中记录编程注释或显示消息。使用 expression 参数可以检查是否存在某种条件,或在"输出"面板中显示值。trace() 语句类似于 JavaScript 中的 alert 函数。可以使用"发布设置"对话框中的"省略跟踪动作"命令将 trace() 动作从导出的 SWF 文件中删除。

   需要重点提示的是trace()函数只能在“调试播放器”中生效;而在正式发布后,在Flash Player或是Html文件中运行的 SWF 文件是无法显示输出结果的;因此,这只是一个对地图开发者有效的后台操作的方法。

  制作步骤:

  1、创建标注按钮及对话窗口

  
首先我们要创建一个“标注”的按钮元件,一个名为“input_mc”的影片剪辑作为对话窗口,以及一个名为“input_txt”的动态文本框用以手动输入地名名称;如图1所示:

图1 创建标注对话窗口

  2、编写相关的ActionScript代码

   打开“标注”按钮的动作面板,输入以下ActionScript代码:

on (release) {             //鼠标释放时触发
  input_mc._visible = 1;   //开启标注的对话窗口
}

   打开“拾取标注点”按钮的动作面板,输入以下ActionScript代码:


on (release) {             //鼠标释放时触发
 _root.map_mc.onMouseDown = function () { //当鼠标按下时触发事件    var inputX = _xmouse; //用变量inputX 记录下当前鼠标指针的 X 轴坐标
   var inputY = _ymouse; //用变量inputY记录下当前鼠标指针的 Y 轴坐标  }

}

   注:上述代码中捕捉鼠标指针的XY坐标值只是示意性的,事实上在实用的地图中远远没有这么简单;因为我们通常是在指定的地点上标注地名名称,因而需要对地图进行缩放、移动等操作;而单纯用_xmouse和_ymouse是无法捕捉正确的坐标值,必须依靠_xscale、_yscale、_width、_hight、_x、_y等属性值去纠正因操作地图产生的偏差。而相关的公式因不同的地图结构各不相同,无法在本例中给出通用的代码。以下是笔者在制作深圳地图时使用的相关捕捉点的公式,仅能作概念性的参考;


_global.bzX = Math.round(15868.48*(_root._xmouse-_root.map_mc._x+825*_root.map_mc._xscale/100)/_root.map_mc._xscale);

//捕捉X轴坐标

_global.bzY = Math.round(15868.48*(_root._ymouse-_root.map_mc._y+426*_root.map_mc._xscale/100)/_root.map_mc._xscale);

//捕捉Y轴坐标

   而在捕捉到指针坐标的同时还可以直接在地图上显示一个标记,可以加入以下代码,用一个红色的圆点表示:

_root.map_mc.createEmptyMovieClip("dzpot_mc", this.getNextHighestDepth());         //画一个圆点
_root.map_mc.dzpot_mc.lineStyle(2, 0xff0000, 100);   //圆点为红色,粗细磅值为2
_root.map_mc.dzpot_mc.moveTo(0, 0);
_root.map_mc.dzpot_mc.lineTo(0, 0.1);
_root.map_mc.dzpot_mc._width = _root.map_mc.dzpot_mc._height = 1000/_root.map_mc._xscale;         //调整圆点的大小
_root.map_mc.dzpot_mc._x = _root.map_mc._xmouse; //圆点坐标与捕捉点重合
_root.map_mc.dzpot_mc._y = _root.map_mc._ymouse; //圆点坐标与捕捉点重合

   打开“完成”按钮的动作面板,输入以下ActionScript代码:

on (release) {             //鼠标释放时触发
 var inputName = input_txt.text //用变量inputName记录下输入的地名名称
 race("<r><n>"+inputName+"</n><x>"+inputX+"</x><y>"+inputY+"</y></r>"+/n);
 //在输出面板中显示XML文件格式的代码
}

   3、在调试播放器中标注地名:

   点击菜单“发布预览”/“Flash”,打开调试播放器,在其中进行标注,如图2所示;


图2 在调试播放器中的进行标注

   如此反复操作,在输出面板中会持续地输出相应的XML文件代码,如图3所示;


图3 在调试播放器中的输出面板中显示输出结果

   注:由于本例只能在调试播放器中生效,因此在网页中无法演示。依照本例的方法,地图的开发者可以在后台迅速地标注地名。但是这往往只限于通用的路名或是地名,而对于大量的公司、商辅等地名信息,开发者却无法进行海量标注,必须通过其它途径由客户端的操作者自行进行在线标注。这样就必须借助数据库和ASP等协助实现,在下一讲中,我们将学习Flash+XML+ASP实现客户端的在线地名标注功能

时间: 2024-08-18 09:39:54

用trace函数实现互动地图后台快速标注地名的相关文章

[图]Flash+ASP实现电子互动地图在线标注功能_应用技巧

于电子互动地图的信息量太大,完全可以通过客户端的广大操作者一同完成海量的标注工作,这样就必须实现在线标注的功能.而这样的功能单独依靠Flash本身是无法实现的.我们可以通过ASP.ASP.net.PHP等协助实现.在本例中,我们使用ASP来共同实现在线标注功能. 1.基本的通信过程 图1 SWF+XML与服务器的通信过程示意图点击看大图 图1展示的是本例中的通信过程示意.在 Flash 和数据库之间传递信息的服务器端脚本以 XML 格式读写数据. 可用 ActionScript 将 SWF 文件

探讨在线互动地图应用的设计趋势和未来

探讨在线互动地图应用的设计趋势和未来

Flash+ASP实现电子互动地图在线标注功能

在线 由于电子互动地图的信息量太大,完全可以通过客户端的广大操作者一同完成海量的标注工作,这样就必须实现在线标注的功能.而这样的功能单独依靠Flash本身是无法实现的.我们可以通过ASP.ASP.net.PHP等协助实现.在本例中,我们使用ASP来共同实现在线标注功能. 1.基本的通信过程 图1SWF+XML与的通信过程示意图点击看大图 图1展示的是本例中的通信过程示意.在Flash和之间传递信息的端脚本以XML格式读写数据. 可用ActionScript将SWF文件中收集到的信息转换成一个XM

struts-急求使用jquery提交的请求回调函数接收不到后台返回值解决办法

问题描述 急求使用jquery提交的请求回调函数接收不到后台返回值解决办法 $.ajax({ type: "post", url: uri, async:true, data: data, success: function (result) { $("#showrecord").append(result); }, error:function(XMLResponse){ alert("wait a minute"); } }); 后台: Ht

ajax回调函数获取不到后台session里边的值

问题描述 ajax回调函数获取不到后台session里边的值 解决方案 又是一个没有搞清楚session在哪里的代码.教科书写明,session是服务器端的对象,也就是说,在浏览器端是取不到session的,也就是说,在浏览器端执行的JS代码是不可能调用到服务器端的session对象.所以,你那个alert()是后执行的,在alert执行时,session已经执行完毕,由于u是一个对象,在你使用<%=的方式进行输出时,自动调用toString()方法,如果你没有重写过这个方法,应该是得到一个&quo

提供几个后台快速开发的UI框架

问题描述 提供几个后台快速开发的UI框架 解决方案

【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. 不要犹豫了,就使用快速创建地图工具吧! -------------------------------------------------------------------------------------- 如何快速创建地图? 一.转入百度提供的快速创建地图工具页面:http://openap

企业在百度地图上添加标注地址信息完美教程

中介交易 SEO诊断 淘宝客 云主机 技术大厅 你的企业地址在百度地图上能够找到吗?搜索你企业名称的时候是否出现有百度地图相关信息呢?对于百度地图标注,企业该该如何去做呢?我想很多的人想知道如何操作,下面跟着单仁资讯一起来学会如何在百度地图上添加标注地址信息. 首先你需要是百度推广注册用户,我们进入自己的百度推广竞价后台,如图2,进入之后点击[账户中心]右侧列表栏目中有个"门店管理"--再点击[门店管理]进入如图3 图2,百度推广后台 图3,点击门店管理 进入门店管理之后,点击[添加门

百度地图循环添加标注,并循环为标注添加信息窗口问题解决

原文:百度地图循环添加标注,并循环为标注添加信息窗口问题解决 最近几年在搞地图方面的开发,主要是循环为坐标添加标注并为标注添加弹出信息窗口,起初我的代码如下: var map = new BMap.Map("Mapcontainer"); var JsonObj = eval(JsonStr); if (JsonObj != null) { for (var i = 0; i < JsonObj.length; i++) { var point = new BMap.Point(