Posted on 2006-04-12 18:59
Kevin Meng 阅读(404)
评论(0) 编辑 收藏
根据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();
}