ArcGIS.Server.9.3和ArcGIS API for JavaScript地图实现Toorbar功能(四)

本文介绍如何使用 ArcGIS API for JavaScript 实现地图工具栏功能,包括缩放、平移、全屏显示等功能,并展示了如何通过 HTML 和 JavaScript 控制地图状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原址: http://www.cnblogs.com/hll2008/archive/2008/11/22/1338630.html

目的:
1.ArcGIS API for JavaScript实现Toorbar功能,包括zoomin、zoomout、zoomfullext、zoomToPrevExtent、zoomToNextExtent、pan等。
准备工作:
1.在使用在线的http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer地图数据和jsapi。
完成后的效果图:


开始
1.启动vs新建名为MapToolbar的ASP.NET Web应用程序。其实jsapi是纯客户端的开发了不需要vs也不需要.net了,纯html页面就可以了用记事本都可以开发了。我这里为了方便了就用vs2008了,毕竟可以调试js脚本了。
2.然后在Default.aspx页面里添加对js库和css文件的引用了,这里的引用地址指向在线的jsapi服务了,包括css和js两部分的引用,具体的说明和代码如下:
<link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.1/js/dojo/dijit/themes/tundra/tundra.css">
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1"></script>
3.接着在工程中添加名为javascript的文件夹并且在这个文件夹里新建mapApp.js的文件,这里用来编写我们自己的js代码了,在页面里添加对这个js文件的引用,同时在Default.aspx页面里添加一个id为map的div标签作为地图控件的载体,同时在添加7个小图并且让小图漂浮在map的div之上用来作为toolbar的功能按钮,在map空的4个边以及4个顶点添加8个小图片用来作为地图8个方向的移动按钮,添加完成后的html代码如下:




<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MapToolbar._Default" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.1/js/dojo/dijit/themes/tundra/tundra.css">
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1"></script>
    <script type="text/javascript" src="javascript/MapApp.js"></script>
    <style type="text/css">
<!--
.mapbtn {
    border: 1px solid #666666;
    background-color: #FFFFFF;
}
-->
    </style>
</head>
<body class="tundra">
    <form id="form1" runat="server"><table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="images/ul.png" width="15" height="15"  onclick="map.panUpperLeft()" /></td>
    <td align="center"><img src="images/u.png" width="15" height="15" onclick="map.panUp()" /></td>
    <td><img src="images/ur.png" width="15" height="15"  onclick="map.panUpperRight()" /></td>
  </tr>
  <tr>
    <td><img src="images/l.png" width="15" height="15" onclick="map.panLeft()"/></td>
    <td>
    <div id="map" style="width:600px; height:512px; border:1px solid #000;"></div>
    <img style="Z-INDEX: 151; LEFT: 292px; CURSOR: hand; POSITION: absolute; TOP: 57px; right: 642px;" 
            alt="" src="images/nav_zoomin.png" name="zoomin" id="zoomin" class="mapbtn" 
            onClick="navToolbar.activate(esri.toolbars.Navigation.ZOOM_IN);">
    <img style="Z-INDEX: 151; LEFT: 330px; CURSOR: hand; POSITION: absolute; TOP: 57px" 
            alt="" src="images/nav_zoomout.png"  name="zoomout" id="zoomout"  
            class="mapbtn" 
            onClick="navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT);">
    <img style="Z-INDEX: 151; LEFT: 368px; CURSOR: hand; POSITION: absolute; TOP: 57px" 
            alt="" src="images/nav_fullextent.png" name="zoomfullext" id="zoomfullext" 
            class="mapbtn" onClick="navToolbar.zoomToFullExtent();"> 
    <img style="Z-INDEX: 151; LEFT: 412px; CURSOR: hand; POSITION: absolute; TOP: 56px" 
            alt="" src="images/d-nav_previous.png" name="zoomprev" id="zoomprev" 
            class="mapbtn" onClick="navToolbar.zoomToPrevExtent();">
    <img style="Z-INDEX: 151; LEFT: 458px; CURSOR: hand; POSITION: absolute; TOP: 55px" 
            alt="" src="images/d-nav_next.png" name="zoomnext" id="zoomnext" class="mapbtn" 
            onClick="navToolbar.zoomToNextExtent();">
    <img style="Z-INDEX: 151; LEFT: 502px; CURSOR: hand; POSITION: absolute; TOP: 55px" 
            alt="" src="images/nav_pan.png" name="pan" id="pan" class="mapbtn" 
            onClick="navToolbar.activate(esri.toolbars.Navigation.PAN);">
    <img style="Z-INDEX: 151; LEFT: 544px; CURSOR: hand; POSITION: absolute; TOP: 55px; right: 390px;" 
            alt="" src="images/nav_decline.png" name="deactivate" id="deactivate" 
            class="mapbtn" onClick="navToolbar.deactivate()">   </td>
    <td><img src="images/r.png" width="15" height="15" onclick="map.panRight()"/></td>
  </tr>
  <tr>
    <td><img src="images/dl.png" width="15" height="15" onclick="map.panLowerLeft()"/></td>
    <td align="center"><img src="images/d.png" width="15" height="15"  onclick="map.panDown()"/></td>
    <td><img src="images/dr.png" width="15" height="15"  onclick="map.panLowerRight()" /></td>
  </tr>
</table>


    </form>
</body>
</html>


4.上面的html中使图片漂浮在map上面是通过样式实现的,map上的7个图片按钮都有这样的样式设置:style="Z-INDEX: 151; LEFT: 292px; CURSOR: hand; POSITION: absolute; TOP: 57px; right: 642px;"这样就能让图片按钮漂浮在map控件上了。
5.还有上面的7个功能按钮以及8个方向的移动按钮都添加的onclick事件了,这些事件就是调用esri.toolbars.Navigation控件的方法或esri.Map控件的方法实现的,具体的看代码了。
6.完成页面后切换到wabapp.js文件开始编写js的功能代码,这里的js代码要完成载入地图进行显示的功能和地图前一视图后一视图的功能按钮的状态控制了,具体的看如下代码:


dojo.require("esri.map");
dojo.require("esri.toolbars.navigation");
var map, navToolbar;
function init()
{
   map = new esri.Map("map");
   map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"));
   navToolbar = new esri.toolbars.Navigation(map);
   dojo.connect(navToolbar, "onExtentHistoryChange", extentHistoryChangeHandler);
 }
 
//当地图视图发生变化时后判定前一视图和后一视图的状态
function extentHistoryChangeHandler()
{
   if(!navToolbar.isFirstExtent())
   {
      dojo.byId("zoomprev").disabled=false;
      dojo.byId("zoomprev").src="images/nav_previous.png";
   }
   else
   {
      dojo.byId("zoomprev").disabled=true;
      dojo.byId("zoomprev").src="images/d-nav_previous.png";
   }
   
   if(!navToolbar.isLastExtent())
   {
      dojo.byId("zoomnext").disabled=false;
      dojo.byId("zoomnext").src="images/nav_next.png";
   }
   else
   {
      dojo.byId("zoomnext").disabled=true;
      dojo.byId("zoomnext").src="images/d-nav_next.png";
   }
}
dojo.addOnLoad(init);


7.这样很简单的就实现了toolbar的一系列功能按钮。

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法同步算法的优劣;④为实际OFDM系统的设计优化提供理论依据技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向技术趋势,如AI增强毫米波通信,为读者提供了更广阔的视野。
管理员功能需求 用户管理 查看用户列表:显示所有用户基本信息 添加用户:支持输入新用户信息并保存至数据库 修改用户信息:支持选择用户并更新其信息 删除用户:支持从数据库中删除选定用户 实习报告成绩管理 查看实习报告列表:显示所有学生实习报告 批阅实习报告:支持选择报告并给出批阅意见评分 查看实习成绩列表:显示所有学生实习成绩 录入实习成绩:支持选择学生并输入成绩 修改实习成绩:支持更新学生实习成绩 通知公告管理 发布通知公告:支持输入通知内容并发布至系统 管理通知公告:支持查看、编辑删除已发布通知 教师功能需求 学生管理 查看所指导学生列表:显示教师负责的所有学生 查看学生实习情况:支持查看学生实习岗位、日志、报告等 实习报告批阅成绩录入 查看待批阅报告列表:显示教师待批阅的实习报告 批阅报告:支持选择报告并给出批阅意见评分 通知公告查看 查看系统通知公告:显示系统发布的所有通知公告 实习岗位管理 发布实习岗位:支持输入岗位信息并发布至系统 编辑实习岗位:支持更新已发布岗位信息 删除实习岗位:支持从系统中删除选定岗位 学生功能需求 个人信息管理 查看个人信息:显示学生基本信息 修改个人信息:支持更新学生信息 实习岗位查询与申请 查询实习岗位:显示所有可用实习岗位 申请实习岗位:支持选择岗位并提交申请 实习日志提交 提交实习日志:支持输入日志内容并提交至系统 查看实习日志:显示学生提交的实习日志 实习报告提交 提交实习报告:支持输入报告内容并提交至系统 查看实习报告:显示学生报告及批阅意见 通知公告查看 查看系统通知公告:显示系统发布的所有通知公告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值