我要做的功能是以b/s方式实现GPS车辆定位,但是我不希望每次从服务器获取到定位信息都刷新浏览器。我现在想到的做法是由脚本语言(js)定时从服务器获取最新的经纬度信息,然后转化为屏幕坐标,由脚本在浏览器上画出车辆的位置,不知道这种做法是不是比较方便和高效的,而我对js不是很熟,对于如何编码实现该方案也不是很清楚,希望高手指点1 2,或者有更好的实现方案,也请告知,并提示具体的编码实现(所有的分都给了)

解决方案 »

  1.   

    可以用dwr做这种提交或者自己写一个XMLHTTP做提交下面是代码,最后交互的值是你response.getWriter.print("abc");的值! 自己好好看吧var http_request = false;
    var methodName = null;
    function send_request(url) {//初始化、指定处理函数、发送请求的函数
    http_request = false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest) { //Mozilla 浏览器
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {//设置MiME类别
    http_request.overrideMimeType('text/xml');
    }
    }
    else if (window.ActiveXObject) { // IE浏览器
    try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }
    if (!http_request) { // 异常,创建对象实例失败
    window.alert("不能创建XMLHttpRequest对象实例.");
    return false;
    }
    http_request.onreadystatechange = processRequest;
    // 确定发送请求的方式和URL以及是否同步执行下段代码
    http_request.open("POST", url, true);
    http_request.send(null);
    }
    // 处理返回信息的函数
    function processRequest() {
        if (http_request.readyState == 4) { // 判断对象状态
            if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
                var returnValue = Trim(unescape(http_request.responseText));
                if(methodName!=null){
                eval(methodName+"('"+returnValue+"')");
                }
            } else { //页面不正常
                alert("您所请求的页面有异常。");
            }
        }
    }
    //去前导后继空格
    function Trim(str)
    {
    if(str=="") return str;
    var newStr = ""+str;
    RegularExp = /^\s+|\s+$/gi;
    return newStr.replace( RegularExp,"" );
    }
    //*********************************************************************************
    //xmlhttp提交 url要提交的地址,methodName回调的页面函数
    function xmlHttpSubmit(url,methodName){
    this.methodName = methodName;
    send_request(url);
    }
      

  2.   

    网上搜搜AJAX技术
    就是做你这样的工作的。
      

  3.   

    两种方法1 是利用xmlhttp或msxml,定时去服务器取数据,就是ajax的原理。定时由客户端控制2 是服务器在接收到request的时候就拿住这个httpconnect不放,定时利用flush往客户端推送一些刷新坐标的js代码。定时由服务器端控制。
      

  4.   

    定时从服务器获取到定位信息可以用Timer+侦听器实现Ajax定时从数据库获取新数据,更新客户段
      

  5.   

    同时搜网(www.tongshisou.com)是一个很有创意的搜索网站,是目前最易用,最方便的整合搜索网站,本身不做搜索却把业界的搜索引擎聚合在自己网站中,包括百度,GOOGLE,YAHOO,中搜,爱问,搜狗,奇虎,腾讯搜搜,OPENV,TVIX,有网页 新闻 图片 音乐 视频 地图 工作 餐饮 的搜索,可谓很全哦,搜索起来确实方便,而且很易用,可以把结果同时在一个网页中以分割条形式分开,而且可以分割成2-4个窗口,大家可以一试哦www.tongshisou.com
      

  6.   

    doomwarrior,你能不能说的详细一点,特别是后一种方法
      

  7.   

    <meta http-equiv="refresh" content="刷新的秒数">
    刷新客户端浏览器的唯一办法就是上面的方法,放在你的jsp里.
    你可以用一个看不见的内框架iframe,里面有一个jsp不断刷新,
    判断服务器的数据是否有变化,一旦变化就刷新整个jsp.
      

  8.   

    大家的回答能详细点吗,ajax谁都知道是什么,但在这里怎么用,可以简要说明一下吧
      

  9.   

    ajax 正是你需要的,ajax就是对xmlhttp包装,不刷新页面而获得server端数据。xmlhttp初体验 
    http://blog.csdn.net/lcllcl987/archive/2005/07/14/425242.aspxajax的demo:
    http://blog.csdn.net/lcllcl987/archive/2006/04/22/673119.aspx