为了进行地图查找,我们必须使用Virtual Earth查找管理器(Search Manager)。这里比较不好的一点是必须访问你网站外部的文件,而这样会导致一个对用户的安全警告信息。
重要提示:它只能在浏览器允许跨站点数据访问的时候使用。缺省情况下浏览器不允许这样作。
在Internet Explorer里你可以这样修改,以允许跨站点数据访问:
1. 在工具菜单里选择Internet选项
2. 选择安全tab
3. 点击自定义级别按钮
4. 在列表里选择其他这个数型列表
5. 允许"跨域浏览数据"

在HTML文件的body段的最后增加一个按钮和输入框来允许用户输入地点并点击按钮进行查找:
<input type="button" value="Find" id="FindButton" name="FindButton" style="position:absolute;left:10px;top:700"/>
<input type="text" name="WhereText" size="20" id="WhereText" style="position:absolute;left:60px;top:700"/>
在代码段中增加一个查找函数DoFind:
function DoFind()
{
var where = document.getElementById("WhereText").value;
VE_SearchManager._ResetPaging();
VE_SearchManager._CancelAllRequests();
VE_SearchManager.searchPage="http://virtualearth.msn.com/search.aspx";
VE_SearchManager._DoSearch(where, where);
}
页面将会进行查找并将查找结果位置显示在地图中央。同时我们也可以将查找的地点增加到便笺条上。我们需要对代码进行处理,使得在查找完成后可以做相应的工作。
新的Dofind方法将会做更多的工作,和VE_SEarchManger._DoSearch函数类似:
function DoFind()
{
var where = document.getElementById("WhereText").value;
var a="";
var b=escape(where);
var c=map.GetLatitude(0);
var d=map.GetLongitude(windowWidth);
var e=map.GetLatitude(windowHeight);
var f=map.GetLongitude(0);
var g="";
var i="";
var r=0;
var url="http://virtualearth.msn.com/search.aspx"+"?a="+a+"&b="+b+"&c="+c+"&d="+d+"&e="+e+"&f="+f+"&g="+g+"&i="+i+"&r="+r;
if(!VE_SearchManager.xmlHttp)
{
VE_SearchManager.xmlHttp=GetXmlHttp();
}
var xmlHttp=VE_SearchManager.xmlHttp;
if(xmlHttp)
{
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange=FindResponseHandler;
VE_SearchManager.searching=true;
xmlHttp.send("");
}
}
FindResponseHandler=function()
{
var x = VE_SearchManager.xmlHttp;
if(x.readyState==4)
{
VE_SearchManager.searching = false;
var code = x.responseText;
try
{
eval(code);
}
catch(ex){}
VE_Scratchpad.AddLocation(
document.getElementById("WhereText").value,
map.GetCenterLatitude(),
map.GetCenterLongitude(),"", "LOC");
}
}
【中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页】