`
izuoyan
  • 浏览: 9197438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

arcims开发经验总结(2) (地图放大缩小、鹰眼实现逻辑)

 
阅读更多

放大缩小:
var x1,y2; //起点 坐标
var y1 ,x2; //对角点坐标
//开始拉框。由鼠标点击触发
function startZoomBox(e) {
//把地图所在的<DIV>移动到初始位置。
moveLayer("theMap",hspc,vspc);
//得到开始的屏幕坐标(相对与地图的哦) mouseX mouseY
getImageXY(e);
//判断是否在地图中点击 地图宽度 iWidth 地图高度 iHeight
if ((mouseX<iWidth) && (mouseY<iHeight)) {
if (zooming) {//zooming表示正在放大中
stopZoomBox(e);//停止拉框
} else {
x1=mouseX;//开始点 x
y1=mouseY//停止点 y
x2=x1+1; //表示你画的框的宽度
y2=y1+1;

zleft=x1;//你画的框 左边 的位置
ztop=y1;//你画的框 上边 的位置
zbottom=y1;//你画的框 下边 的位置
zright=x1//你画的框 右边 的位置
boxIt(x1,y1,x2,y2);//画红框,dhtml实现
zooming=true; //表示正在放大中
}
}
return false;
}
//拉框中,移动鼠标
function mouseStuff() {
x2=mouseX; //得到当前鼠标坐标
y2=mouseY; //得到当前鼠标坐标

if (x1>x2) {//判断起点 终点 x坐标大小,重新给zright zleft附值
zright=x1;
zleft=x2;
} else {
zleft=x1;
zright=x2;
}
if (y1>y2) {//判断起点 终点 y zbottom ztop 附值
zbottom=y1;
ztop=y2;
} else {
ztop=y1;
zbottom=y2;
}
//如果起点 终点不是一个点时,画框
if ((x1 != x2) && (y1 != y2)) {
boxIt(zleft,ztop,zright,zbottom);
}
}

//停止拉框,鼠标释放触发事件
function stopZoomBox(e) {
zooming=false;//表示放大完成

//当我们拉框太小,小于线的宽度时,就当作点放大。
if ((zright <zleft+2) && (zbottom < ztop+2)) {
zoomin(e);
} else {//拉框放大

var tempLeft=lastLeft;
var tempRight=lastRight;
var tempTop=lastTop;
var tempBottom=lastBottom;
saveLastExtent();

//得到 横向 每个象素代表的 实际距离 xDistance 表示当前地图比例时,横向距离。
//其实是 每个象素代表的 经纬度
pixelX = xDistance / iWidth;
//拉框上边 和 地图底边的距离 屏幕距离
//为什么要定义这个呢??
//屏幕坐标 左上角为坐标原点
//地理坐标 我们当成 左下角为坐标原点
var theY = iHeight - ztop;
//得到 纵向 每个象素代表的 实际距离 yDistance 表示当前地图比例时,纵向距离。
pixelY = yDistance / iHeight;
//大家仔细看下面代码, 得到我们操作后,上下左右 的(距离)经纬度
//结果上边经度 = 每个象素代表的经度 * /拉框上边和地图底边的距离(屏幕距离)+ 操作以前的底边经度
//在这里eTop等是地理坐标 zTop等是屏幕坐标
eTop = pixelY * theY + eBottom;
eRight = pixelX * zright + eLeft;
eLeft = pixelX * zleft + eLeft;
theY = iHeight - zbottom;
pixelY = yDistance / iHeight;
eBottom = pixelY * theY + eBottom;

//得到 eTop eRight eLeft eBottom 四个经纬度值,请求ims服务器,返回合适的地图。
sendMapXML();
}
return true;
}

鹰眼实现:
鹰眼实现方法:根据arcIMS代码说明,掌握逻辑后,mapinfo,mapx,mo等实现就容易了。

开始前,大家首先要对arcims中,如何记录地图位置熟悉。

抓一副全图,存成gif文件,作为鹰眼图底图。

var fullOVLeft = 116; //全图时,地图最左边代表的经度 当你用其他坐标体系的坐标时,这个值不同。一般,我们熟悉经纬度。
var fullOVRight = 117; //全图时,地图最右边代表的经度
var fullOVTop = 40; //全图时,地图最上边代表的经度
var fullOVBottom = 39.6; //全图时,地图最下边代表的经度

//点击鹰眼, 入口参数是 屏幕 鼠标的坐标
function ovMapClick(x,y) {
var ovWidth = 150; //我们鹰眼图的宽度 单位px,是屏幕单位
var ovHeight = 100; //鹰眼图的高度 单位px,是屏幕单位

//下面两行代码得到,为什么要两个呢。可能我们显示的时候,把服务器返回的图片压缩了。
//每 px单位的屏幕宽度 代表的 经度距离
var ovXincre = fullOVWidth / ovWidth;
//每 px单位的屏幕宽度 代表的 纬度距离
var ovYincre = fullOVHeight / ovHeight;

var ovX = x;
var ovY = ovHeight - y;//注意,屏幕 和 地理 坐标原点不同。在其他文章中提到过。
//下面两行代码我们得到了 鼠标点击位置代表的 地理位置。(经纬度)
var ovmapX = ovX * ovXincre + fullOVLeft;
var ovmapY = ovY * ovYincre + fullOVBottom;
//arcims带的,当我们想看上一操作的地图时,这些保存的东西就有用咯。
saveLastExtent();
//下面代码表示 改变地图的中心点,但是room 值不变。arcIMS中,是以下实现的。在
mapxtreme中,一个函数就OK了。

//熟悉arcIMS的,以下代码可能明白。
eLeft = ovmapX - xHalf;
eRight = ovmapX + xHalf;
eTop = ovmapY + yHalf;
eBottom = ovmapY - yHalf;
sendMapXML();

}

分享到:
评论

相关推荐

    ArcIMS开发经验总结1-2-3-4.doc

    《ArcIMS开发经验总结》 ArcIMS是Esri公司推出的一款用于构建地理信息系统(GIS)Web应用程序的平台。它允许用户通过网络浏览器访问和操作地理空间数据。本文将深入探讨ArcIMS开发中的关键概念和实践经验,特别是...

    Arcims(HtmlView)开发经验总结

    在本文中,我们将深入探讨ArcIMS(现在称为ArcGIS Server JavaScript API)的HtmlView开发经验。ArcIMS是一个早期的Web GIS解决方案,它允许开发者创建基于Web的地图应用。HtmlView是ArcIMS的一个组件,用于在HTML...

    ArcIMS开发

    将ArcIMS与.NET结合,可以实现强大的地理空间服务功能,如地图显示、查询、分析以及数据编辑等。 文件列表中的各项内容可能包含以下知识点: 1. **world.axl**:这可能是一个ArcIMS地图服务配置文件,用于定义地图...

    arcims.rar_arcims_gis_地图 java

    本文将深入探讨ArcIMS GIS系统以及其与Java的结合,特别是如何实现地图的放大、缩小、全图、鹰眼和漫游等关键功能。 1. **ArcIMS GIS基础**:ArcIMS的核心功能是提供地图服务,包括地图显示、数据查询、空间分析等...

    arcims二次开发

    Java Connector 是一种基于java语言的开发方法,主要是利用封装好的java类,通过在java程序中调用其api方法来建立客户端与arcims应用服务器端之间的联系,再通过建立起来的关联得到地图服务,然后就可以调用Map类中...

    arcims 开发示例

    总结来说,ArcIMS 9.2开发示例为我们提供了一个实践Web GIS服务发布的平台。通过理解mxd文件的绝对路径设置,我们可以避免在服务创建过程中遇到的数据找不到的问题。同时,通过研究这个示例,我们可以学习到ArcIMS的...

    arcims 开发以及培训资料

    2. JavaScript集成:使用Esri的JavaScript API与ArcIMS服务进行通信,实现地图控制、查询等功能。 3. AJAX技术:利用异步JavaScript和XML提升用户体验,提供更流畅的交互。 4. CSS样式:通过CSS定义页面布局和样式,...

    ArcIMS地图配置文件,地图服务,请求和响应之间的关系

    总结来说,ArcIMS地图配置文件是定义地图服务基础设置的关键,包括图层、样式和数据源。地图服务是客户端与空间服务器之间的桥梁,接收请求并提供响应。ArcXML作为通信的通用语言,确保了整个流程的顺畅。理解这些...

    ArcIMS webgis开发

    2. **工作流(Workflows)**: 在ArcIMS中,开发工作流程通常包括创建地图文档、配置服务、发布服务和构建Web应用程序。 3. **客户端组件(Client Components)**: 包括JavaScript API、ActiveX控件、Java Applet等...

    ArcIMS开发问题集合.rar

    ArcIMS开发相关问题集合ArcIMS开发相关问题集合ArcIMS开发相关问题集合

    ArcIMS简介及开发

    ArcIMS 简介及开发 ArcIMS 是一种基于 Web 的 GIS 服务器软件,它提供了一个统一的平台,用于发布、分享和管理地理空间数据。下面是关于 ArcIMS 的详细介绍和开发相关知识点。 什么是 ArcIMS? ArcIMS 是一种 ...

    arcims.rar_arcgis_arcims_开发文档

    2. **ArcIMS概念**:理解ArcIMS的基本架构,包括地图服务器、图像服务器、地理编码服务器和元数据服务器等组成部分,以及它们在Web服务中的角色。 3. **Web GIS开发**:学习如何使用ArcIMS创建Web地图应用,包括...

    使用ArcIMS发布一个地图网站的流程

    在GIS领域,ArcIMS是Esri公司开发的一款用于构建地理信息网络服务的工具,它使得地图数据能够通过互联网或内联网进行发布、管理和共享。本文将详细介绍如何使用ArcIMS发布一个地图网站的流程,这对于初学者掌握...

    基于ArcIMS的武汉大学电子地图发布系统设计

    武汉大学电子地图发布系统的设计与开发以ArcIMS为平台,结合ASP、Ajax等技术,目的是为用户提供网上电子地图服务,实现校园地图浏览、空间查询、课表查询、分类查询以及空间信息互动等功能。系统采用B/S三层架构模型...

    arcims 开发教材

    描述再次强调了这是一本关于ArcIMS开发的教材,意味着文档内容将详细介绍如何使用ArcIMS进行地理空间数据的管理、处理和服务发布等操作。对于开发者而言,了解这些知识非常重要,因为它们能够帮助开发者更好地利用...

    基于ArcIMS的地图切图原理

    总结来说,基于ArcIMS的地图切图原理是Web GIS发展的重要里程碑,它通过预先分割地图数据为小块,实现了高效、快速的地图浏览,为后来的Web GIS技术奠定了基础。虽然技术不断进步,但这一基本原理在当前的GIS应用中...

    基于ARCIMS的webgis

    2. 创建地图服务:在ARCIMS中配置并发布地图服务,设置权限和性能参数。 3. 设计用户界面:利用HTML、JavaScript等创建交互式Web页面,集成ARCIMS提供的API进行地图操作。 4. 部署与测试:将应用程序部署到Web服务器...

    850552ArcIMS .NET 开发示例

    【标题】"850552ArcIMS .NET 开发示例" 是一个与地理信息系统(GIS)相关的开发资源包,特别针对Esri公司的ArcIMS产品,利用.NET框架进行开发。ArcIMS是Esri早期提供的一项服务,用于构建和发布网络GIS应用程序。 ...

    基于ArcIMS的地理信息系统的研究与实现

    【基于ArcIMS的地理信息系统的研究与实现】 地理信息系统(Geographic Information System,简称GIS)是一种集成了计算机硬件、软件和地理数据的系统,用于采集、存储、管理、分析和展示所有类型地理信息。ArcIMS是...

    ArcIMS相关参考文档

    总之,这个ArcIMS相关参考文档集是一份宝贵的资源,无论你是GIS管理员、开发者还是使用者,都可以从中获取到实现Web GIS应用所需的技术细节和实践经验,进一步提升你在GIS领域的专业能力。通过深入学习和实践,你...

Global site tag (gtag.js) - Google Analytics