与mapguide 的双向查询之一

     开发了一个网站,查询一些空间对象,要连接到GIS系统,通过Keyid传过去,让对象现显示出来。以前是直接在TaskPanel中写的。存在父子关系好实现,现在要想让地图显示后立即放大到所选的对象。存在一个事件先后顺序。如果把查找和选中的函数放在page_Load里是不行的。因为地图还没加载完成是不能调用地图资源的,同时也不能使用viewer API。后来搜索了下发现了一篇文章。

http://trac.osgeo.org/mapguide/wiki/CodeSamples/JavaScript/AJAXViewerEventHooking

 

然后在通过AJAX解决了这个问题;一下为我的代码:

<script type="text/javascript">       // 本程序已通过调试

//创建ajax的处理
    //#region
 

    var xmlHttp;
    function createXmlHttpRequest() {
        if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();

            if (xmlHttp.overrideMimeType) {
                xmlHttp.overrideMimeType("text/xml");
            }
        }
        else if (window.ActiveXObject) {
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        if (!xmlHttp) {
            window.alert("你的浏览器不支持创建XMLhttpRequest对象");
        }
        return xmlHttp;
    }

    //创建CheckSelect

    function CheckSelect() {

        createXmlHttpRequest();

        var url = "highlighthandle.ashx";

        xmlHttp.open("post", url, true);

        xmlHttp.onreadystatechange = CheckSelectResult;

        xmlHttp.send(null);

    }

    //创建用户检测的回调函数

    function CheckSelectResult() {
        if (xmlHttp.readyState == 4)//服务器响应状态
        {
            if (xmlHttp.status == 200)//代码执行状态
            {
                if (xmlHttp.responseText == "true") {
                  alert("handle 处理错误")

                }
                else {
            
                    document.ViewerFrame.mapFrame.SetSelectionXML(xmlHttp.responseText);
                    document.ViewerFrame.mapFrame.ExecuteMapAction(10);
                }
            }
        }
    }


    //#endregion





   
   
   

//当map加载完成后,处理选择的对象,【否则会报错】,激发ajax的处理

//#region
    function OnMapInitialized() {//当map加载完成后出发的操作
        CheckSelect(); 
    }

    window.onload = function() {
        //设置timer
        var timer;
        var watch = function() {
            try {
                var mapFrame = document.ViewerFrame.mapFrame;

                if (mapFrame.mapInit) {

                    // 取消循环
                    clearInterval(timer);

                    // Call our custom handler
                    OnMapInitialized();
                }
            }
            catch (e) {
            }
        };
        timer = setInterval(watch, 200);
    };

//#endregion

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值