| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1070 人关注过本帖
标题:地图l拉框选房数据库如何建立
只看楼主 加入收藏
SMR888
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-20
收藏
 问题点数:0 回复次数:1 
地图l拉框选房数据库如何建立
紧急求助:我在做一房产中介网站,要建一房源数据库,在地图上感兴趣位置拉框选房,之后即显示框中位置的租房及售房信息,
http://bj.   http://hz.  这二家网站做得很不错,但我不会,请
高手帮忙,重金酬谢,QQ:617744745  电话:13776855115
搜索更多相关主题的帖子: 数据库 地图 
2008-07-20 10:46
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
如果你对这个技术感兴趣,你可以右键查看源代码,毕竟这样是最直接的。

比较关键的是这些js脚本:
http://lib.
http://vipapi.
http://vipapi.
http://vipapi.
http://vipapi.
程序代码:
var g_XMLHTTP = null;
var g_fullURL = "";
var maps;
var api_url = "MapSearchAjax.aspx"; //查找动态页,设置二手房、租房等查找地址
var lx,sx,ly,sy,RentNum;
var control;
var kk=2;
otherlist="";
var RentType=-1;
var RentValue=0;
//拉框结束执行的查找操作
function doit(bounds)
{ 
    otherlist="";
    maps.clearOverLays();//去掉所有的标注
    //document.getElementById("decr").style.display='none';//隐藏提示层
    lx=bounds.getXmax();
    sx=bounds.getXmin();
    ly=bounds.getYmax();
    sy=bounds.getYmin();
    RentType=document.getElementById("zfRentType").value;
    RentValue=document.getElementById("zfRentValue").value;
    RentNum=document.getElementById("zfRentNum").value;
    if(RentType!="")
        otherlist+="&RentType="+RentType;
    if(RentValue!="")
        otherlist+="&RentValue="+RentValue;
    if(RentNum!="")
        otherlist+="&RentNum="+RentNum;
    //发布时间
    var RentDays=document.getElementById("RentDays").value;
    if(RentDays!=0)
        otherlist+="&Days="+RentDays;                
    search_map(bounds.getXmax(),bounds.getXmin(),bounds.getYmax(),bounds.getYmin(),1,otherlist)
    startit(document.getElementById("Map_Btnimg"));
}
//设置点击按钮的操作。切换点击按钮的html
function startit(obj)
{
    if(obj.src.toLowerCase().indexOf('startsearch.gif') != -1)
        obj.src="images/endsearch.gif";
    else
        obj.src="images/startsearch.gif";
    control.btnClick();
}
//初始化地图
function initMap()
{
    maps = new LTMaps("mapDiv");//指定地图放到那个层
    maps.cityNameAndZoom( CurrentCity  , 6 );//设置中心
    maps.handleKeyboard(); //键盘操作支持
    maps.handleMouseScroll();//鼠标滚轮支持

    maps.addControl(new LTStandMapControl());
    control = new LTZoomSearchControl();    //建立新的拉框查找控件
    maps.addControl(control);            //添加控件到地图
    control.setVisible(false);//隐藏拉框控件按钮
    var div=document.createElement("DIV");
    div.style["position"]="absolute";;
    div.style["zIndex"]="100000";
    div.innerHTML='<img src="images/startsearch.gif" id="Map_Btnimg" style="cursor:pointer" onclick="startit(this);"/>';
    var HEC = new LTHtmlElementControl(div);
    HEC.setRight("15px");
    HEC.setTop("15px");
    maps.addControl(HEC);
    LTEvent.addListener(control,"mouseup",doit);    //设置在用户拉框完成之后执行do
}
//设置鼠标经过标注时显示信息浮窗,离开时关闭浮窗
function openInfoWin(marker,html,title)
{
    return function(){
    var win= this.openInfoWinHtml( html );
    win.setTitle(title);
    win.moveToShow();
    //win.closeInfoWindowWithMouse();    //定义在鼠标移出时关闭信息浮窗
    }
}
//拉框查找
var errmsg;
var ppp;
//查找地图
//参数说明lx: x最大 sx:x最小,ly:y最大,sy:y最小,index:页码
function search_map(lx,sx,ly,sy,index,other)
{
    sendRequest(setPatchPoi,api_url+"?lx="+lx+"&sx="+sx+"&ly="+ly+"&sy="+sy+"&p="+index+other);
    otherlist=other;
    //errmsg="/map/SearchMap.aspx?lx="+lx+"&sx="+sx+"&ly="+ly+"&sy="+sy+"&p="+index;
    ppp=index;
}
function search_map1(lx1,sx1,ly1,sy1,index,other)
{
    if(kk==1)
    {
        sendRequest(setPatchPoi,api_url+"?lx="+lx1+"&sx="+sx1+"&ly="+ly1+"&sy="+sy1+"&p="+index+other);
        otherlist=other;
        //errmsg="/map/SearchMap.aspx?lx="+lx+"&sx="+sx+"&ly="+ly+"&sy="+sy+"&p="+index;
        lx=lx1;
        ly=ly1;
        sx=sx1;
        sy=sy1;
        ppp=index;
        kk=2;
    }
}

var html=[];
var title=[];
var points=[];
var marknumber;
for(var iiii=0;iiii<20;iiii++)
{
    eval(" var marker"+iiii+"; ")
}
//批量在地图上添加找到的标注
function setPatchPoi(pois)
{
    maps.clearOverLays();//去掉所有的标注    
    var arrydate0 = pois.split("*%&^");//先分割出
    document.getElementById("resultlist").innerHTML=arrydate0[1];
    
    points=[];//清空后填充
    var arrydate = arrydate0[0].split("{$}");//先分割出
    if(maps==null)
        alert("没有地图");
    
    var x=[];
    var y=[];

    icon1 = new LTIcon();
    //再次分割并且初始化标注点
    marknumber=arrydate.length;
    for(var i=0;i<arrydate.length-1;i++)
    {
        var temparry=arrydate[i].split(",");
         //租房
        x[i] = temparry[0];
        y[i] = temparry[1];
        html[i]= "<p><a href='detail.aspx?ID="+temparry[3]+"' target='_blank'>"+temparry[7]+"</a></p><p>"+temparry[4]+"元/月</p><p>类型:"+temparry[5]+"</p>";
        title[i]="<font style='font-size:12px'>"+temparry[2]+"(<a href='detail.aspx?ID="+temparry[3]+"' target='_blank'>查看详情</a>)</font>";
        icon1.setImageUrl("images/Mark_Company.gif");
        points.push(new LTPoint( parseInt(x[i]) , parseInt(y[i]) ));
        eval(" marker"+i+" = new LTMarker( points["+i+"] ,icon1);");
        eval("maps.addOverLay( marker"+i+" ); ");
        eval("LTEvent.addListener( marker"+i+" , \"mouseover\" ,openInfoWin(marker"+i+",html["+i+"],title["+i+"]));");
    }    
    //同时把查找条件发送到iframe中,实现翻页
    maps.getBestMap(points);//将地图定位到最佳视图
}
//当没有结果的时候清掉之前的结果
function clearresult()
{
    document.getElementById("resultlist").innerHTML='<h2 style="margin-left:370px;margin-top:30px">暂无搜索结果</h2>';
}
//滑动实现地图中心移动到标注位置。
function gotocenter(i)
{
    maps.moveToCenter(points[i]);//滑动实现地图中心移动到标注位置。
    eval("var infoWin=marker"+i+".openInfoWinHtml(html["+i+"]);");    //在该标记上显示一个信息浮窗
    eval("infoWin.setTitle(title["+i+"]);")    //设置该信息浮窗的标题内容
    window.scrollTo(0,246);
}
function getXMLHTTPRequest() {
    if (g_XMLHTTP)
    {
        g_XMLHTTP = null;
    }
    try
    {
        g_XMLHTTP = new ActiveXObject("Msxml2.xmlhttp");
    }
    catch (e)
    {
        try
        {
            g_XMLHTTP = new ActiveXObject("Mcrosoft.xmlhttp");
        }
        catch (e2)
        {
            g_XMLHTTP = false;
        }
    }
    if (!g_XMLHTTP && typeof XMLHttpRequest != "undefined")
    {
        try
        {
            g_XMLHTTP = new XMLHttpRequest();
        }
        catch (e)
        {
            g_XMLHTTP = false;
        }
    }
}
var data ;
function sendRequest(callback,url){
    getXMLHTTPRequest();
    var bakresult=document.getElementById("result");
    if(document.getElementById("rentmapfinally").style.display=="none")
        document.getElementById("rentmapfinally").style.display="";
    if (g_XMLHTTP){
        g_XMLHTTP.open("GET",url,true);
        g_XMLHTTP.setRequestHeader("Content-Type","text/html;charset=gbk");
        g_XMLHTTP.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
        g_XMLHTTP.onreadystatechange = function()
        {
            if(g_XMLHTTP.readyState == 1)
            {
                bakresult.style.display="";
                bakresult.innerHTML="<img src=\"images/map/load01.gif\" />正在加载";
            }
            if(g_XMLHTTP.readyState == 2|| g_XMLHTTP.readyState==3)
            {
                bakresult.style.display="";
                bakresult.innerHTML="<img src=\"images/map/load01.gif\" />正在搜索";
            }            
            if (g_XMLHTTP.readyState == 4)
            {
                if (g_XMLHTTP.status == 200)
                {
                    data=g_XMLHTTP.responseText;
                    if (data == "-1")
                    {
                        bakresult.innerHTML="搜索条件为空";
                        clearresult();
                        return false;
                    }
                    if (data == "-2")
                    {
                        bakresult.innerHTML="没有符合条件的结果";
                        clearresult();
                        return false;
                    }
                    if (data == "-3")
                    {
                        bakresult.innerHTML="服务器繁忙";
                        clearresult();
                        return false;
                    }
                    bakresult.innerHTML="<img src=\"images/map/load01.gif\" />正在处理";
                    callback(data);
                    bakresult.style.display="none";
                    data = "";
                }
                else
                {
                    bakresult.innerHTML="取出内容时出错";
                    clearresult();
                }
            }
        }
        g_XMLHTTP.send(null);
        return true;
    }
    else
    {
        alert("建立对象出错");
    }
    return false;
}


至于服务器的程序应该就是比较简单的了,看客户端发送了什么条件过去查找记录按照格式返回即可。
2008-07-20 12:30
快速回复:地图l拉框选房数据库如何建立
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031049 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved