<html xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312"/>
<meta name="keywords" content="LTMapText.setLabel,LTMaps.addOverLay,LTMarker,JavaScript,灵图,51ditu Maps API,地图,范例文档,vml"/>
<title>我要地图接口使用范例-灵图51ditu Maps API范例</title>
<style type="text/css">
v\:*{behavior:url(#default#VML);}
.markerList
{
color:#FF6410;font-weight:bold;font-size: 10pt;background-color:#CCFFFF;
}
.markerListOver
{
cursor:pointer;color:#FF6410;font-weight:bold;font-size: 10pt;background-color:#CCCCFF;
}
</style>
<script language="javascript">
var map;
var win;
var points=[];
var mapTexts=[];
var markers=[];
var labels=[];
var tips=[];
var moveLsitener;
var markerEdit;
var markerEditForm;
var lTStandMapControl;//地图导航控件
var lTRectControl;//拉框控件
var mapMode;
var mapDrag;
function onMouseOver()
{
this.setVisible(true);
}
function onMouseOut()
{
this.setVisible(false);
}
function onMoveEnd()//定义地图在定位到中心完成之后执行的函数
{
LTEvent.removeListener(moveLsitener);//删除事件注册
var point=map.getCenterPoint();//根据像素位置p求出经纬度坐标
points.push(point);
addMarker(points.length-1);
showEditMarkerForm(points.length-1);
//map.zoomIn();//放大地图
}
function onDblClick(point)
{
if(mapMode=="marker")
{
points.push(point);
addMarker(points.length-1);
showEditMarkerForm(points.length-1);
}
}
function onDblClick1()//定义在双击的时候执行的函数
{
if(mapMode=="marker") moveLsitener=LTEvent.addListener(map,"moveend",onMoveEnd);
//因为系统默认双击的时候会将地图定位到中心,因此,只需要定义地图在定位到中心完成之后添加自己的事件即可
}
function onDraw(bounds,rect)
{
//var points=[new LTPoint(bounds.getXmin(),bounds.getYmin()),new LTPoint(bounds.getXmin(),bounds.getYmax()),new LTPoint(bounds.getXmax(),bounds.getYmax()),new LTPoint(bounds.getXmax(),bounds.getYmin())];
//map.getBestMap(points);//将地图定位到最佳视图
var point=new LTPoint((bounds.getXmin()+bounds.getXmax())/2,(bounds.getYmin()+bounds.getYmax())/2);
var zoom=map.getBestZoom(bounds);
map.moveToCenter(point);
map.zoomTo(zoom);
this.clear();
}
function dragEndCallBack(i)
{
return function()
{
if(points[i]==this.point) return;
if(confirm("真的要移动标注吗?"))
{
points[i]=this.point;
mapTexts[i].setPoint(points[i]);
showMarker(i);
}
else
{
markers[i].setPoint(points[i]);
}
}
}
function clickMarkerCallBack(i)
{
return function()
{
showMarker(i);
};
}
function showMarker(i)
{
//map.moveToCenter(points[i]);
win=markers[i].openInfoWinHtml("<div align=left style='width:200px;height:100px;overflow:auto'>"+tips[i].replace(/[\n]/g,"<br>")+"</div>");
if(mapMode=="marker")
win.setTitle("[<span style='cursor:pointer;color:#FF6410' οnclick='showEditMarkerForm("+i+")'>编辑</span>][<span style='cursor:pointer;color:#FF6410' οnclick='deleteMarker("+i+")'>删除</span>]"+labels[i]);
else
win.setTitle(labels[i]);
win.moveToShow();
}
function deleteMarker(i)
{
if(confirm("真的要删除标注\""+labels[i]+"\"吗?"))
{
map.removeOverLay(markers[i],true);
map.removeOverLay(mapTexts[i],true);
win.closeInfoWindow();
$("mapList").removeChild($("markerList"+i));
}
}
function editMarker()
{
if(!/.{2,30}/.test(markerEditForm.label.value))
{
alert("标注名称必须为2到30个字符");
return false;
}
if(markerEditForm.tips.value.length>250)
{
alert("标注说明必须为0到250个字符");
return false;
}
i=markerEditForm.index.value;
labels[i]=markerEditForm.label.value.replace(/</gi,"<");
tips[i]=markerEditForm.tips.value.replace(/</gi,"<");
mapTexts[i].setLabel(labels[i]);
$("markerList"+i).innerHTML=labels[i];
showMarker(i);
return false;
}
function showEditMarkerForm(i)
{
markerEditForm.index.value=i;
markerEditForm.label.value=labels[i].replace(/</gi,"<");
markerEditForm.tips.value=tips[i].replace(/</gi,"<");
win=markers[i].openInfoWinElement(markerEdit);
markerEdit.style.display="block";
win.setTitle("[<span style='cursor:pointer;color:#FF6410' οnclick='markerEditForm.submit.click()'>确定</span>]"+labels[i]);
win.moveToShow();
}
function addMarker(i)
{
var point=points[i];
var x=point.getLongitude();
var y=point.getLatitude();
markers[i] = new LTMarker(point);
mapTexts[i] = new LTMapText(markers[i]);
labels[i]="第"+(1+i)+"个标注";
tips[i]="坐标位置:"+ x + "," + y + "\n你可以在这里添加标注说明.";
mapTexts[i].setLabel(labels[i]);
mapTexts[i].setVisible(false);
mapTexts[i].setNoWrap(false);
map.addOverLay(markers[i]);
map.addOverLay(mapTexts[i]);
if(mapMode=="marker")
{
markers[i].enableDrag();
}
LTEvent.addListener(markers[i],"click",clickMarkerCallBack(i));
LTEvent.addListener(markers[i],"dragend",dragEndCallBack(i));
LTEvent.bind(markers[i],"mouseover",mapTexts[i],onMouseOver);
LTEvent.bind(markers[i],"mouseout",mapTexts[i],onMouseOut);
$("mapList").innerHTML+="<div id='markerList"+i+"' class='markerList' οnmοuseοver='this.className=\"markerListOver\"' οnmοuseοut='this.className=\"markerList\"' οnclick='showMarker("+i+")'>"+labels[i]+"</a></div>";
}
function onLoad()
{
mapMode="view";
mapDrag=0;
map=new LTMaps("mapDiv");
lTStandMapControl=new LTStandMapControl();//地图导航控件
lTRectControl = new LTRectControl();//拉框控件
lTRectControl.setVisible(false);
LTEvent.addListener(lTRectControl,"draw",onDraw)
map.addControl(lTRectControl);
map.addControl(lTStandMapControl);
map.centerAndZoom(new LTPoint(11177540,2314850),0);
map.handleKeyboard();//启用键盘
map.handleMouseScroll();//启用鼠标滚轮功能支持,参数true代表使用鼠标指向点位置不变模式
points.push(new LTPoint(11177440,2314850));
points.push(new LTPoint(11177540,2314850));
points.push(new LTPoint(11177640,2314850));
for(i=0;i<points.length;i++)
{
addMarker(i);
}
//LTEvent.addListener(map,"dblclick",onDblClick1);//在地图被双击时,先调用系统函数(定位到中心),再执行onDblClick函数
LTEvent.bind(map,"dblclick",map,onDblClick);//绑定事件,在双击的时候先执行onDblClick函数,再调用系统函数(定位到中心)
markerEditForm=document.forms["markerEditForm"];
markerEdit=$("markerEdit");
}
function showMapInfo()
{
$("mapInfo").style.display="block";
$("mapCtrl").style.display="none";
}
function showMapCtrl()
{
if(map==null) return;
$("mapInfo").style.display="none";
$("mapCtrl").style.display="block";
}
function changeMapMode(obj)
{
var value=obj.value;
if(value==mapMode) return;
mapMode=value;
if(mapMode=="marker")
{
for(var i=0;i<points.length;i++)
{
markers[i].enableDrag();
}
}
else
{
for(var i=0;i<points.length;i++)
{
markers[i].disableDrag();
}
}
obj.blur();
}
function changeMapCtrl(obj)
{
var value=obj.value;
try
{
if(value=="off")
{
map.removeControl(lTStandMapControl);
}
else
{
map.addControl(lTStandMapControl);
}
obj.blur();
}
catch(e)
{
}
}
function changeKeyBoard(obj)
{
var value=obj.value;
try
{
if(value=="off")
{
map.clearHandleKeyboard();
}
else
{
map.handleKeyboard();
}
obj.blur();
}
catch(e)
{
}
}
function changeMouseWheel(obj)
{
var value=obj.value;
try
{
if(value=="off")
{
map.clearHandleMouseScroll();
}
else
{
map.handleMouseScroll();
}
obj.blur();
}
catch(e)
{
}
}
function changeMouseDrag(obj)
{
var value=obj.value;
try
{
if(value=="on"&&mapDrag==0)
{
lTRectControl.btnClick();
mapDrag=1;
}
else if(value=="off"&&mapDrag==1)
{
lTRectControl.btnClick();
mapDrag=0;
}
obj.blur();
}
catch(e)
{
}
}
function $(id)
{
return document.getElementById(id);
}
</script>
</head>
<body οnlοad="onLoad()">
<div align="center">
<h2>我要地图接口使用范例</h2>
</div>
<div id="mapInfo" align="left" style="position:absolute;width:200px; height:400px;top:60px;left:10px;border:#F2BB6F solid 1px;overflow-x:hidden;overflow-y:auto;font-size:12px;display:block">
<div style="position:absolute;height:20px;left:0px;background-color:#FF6410;color:#FFFFFF;font-weight:bold;font-size: 10pt;border:#F2BB6F solid 1px;cursor:pointer;" οnclick="showMapInfo()">使用说明</div>
<div style="position:absolute;height:20px;left:60px;background-color:#FFFFFF;color:#FF6410;font-weight:bold;font-size: 10pt;border:#F2BB6F solid 1px;cursor:pointer;" οnclick="showMapCtrl()">地图控制</div>
<div style="position:absolute;top:30px;">
<h4>本范例主要实现以下功能:</h4>
<ul>
<li>地图加载初始化(地图导航控件,中心定位缩放等)</li>
<li>启用键盘方向键控制地图移动</li>
<li>启用鼠标滚轮控制地图缩放</li>
<li>添加自定义标注(双击左键添加)</li>
<li>点击标注图标弹出标注提示窗口</li>
<li>拖曳标注图移动标注位置</li>
<li>编辑标注说明(在标注提示窗口中点击"编辑")</li>
<li>点击导航列表自动定位到指定标注</li>
<li>拉框放大和拖曳定位功能的切换</li>
</ul>
<h4>浏览代码请查看源文件.</h4>
<a href="http://api.51ditu.com/docs/mapsapi/reference.html" target="_blank">51ditu Maps API 类参考文档</a><br>
</div>
</div>
<div id="mapCtrl" align="left" style="position:absolute;width:200px; height:400px;top:60px;left:10px;border:#F2BB6F solid 1px;overflow-x:hidden;overflow-y:auto;font-size:12px;display:none">
<div style="position:absolute;height:20px;left:0px;background-color:#FFFFFF;color:#FF6410;font-weight:bold;font-size: 10pt;border:#F2BB6F solid 1px;cursor:pointer;" οnclick="showMapInfo()">使用说明</div>
<div style="position:absolute;height:20px;left:60px;background-color:#FF6410;color:#FFFFFF;font-weight:bold;font-size: 10pt;border:#F2BB6F solid 1px;cursor:pointer;" οnclick="showMapCtrl()">地图控制</div>
<div style="position:absolute;top:30px;">
<h4>以下是可选地图控制操作:</h4>
地图模式:
<input type="radio" name="mapMode" value="view" οnclick="changeMapMode(this)" checked>浏览
<input type="radio" name="mapMode" value="marker" οnclick="changeMapMode(this)">标注
<br>标注模式下可双击添加标注,拖曳移动标注,单击编辑标注.<br>
导航控件:
<input type="radio" name="mapCtrl" value="on" οnclick="changeMapCtrl(this)" checked>启用
<input type="radio" name="mapCtrl" value="off" οnclick="changeMapCtrl(this)">禁用
<br>启用导航控件可方便地对地图进行移动缩放等操作.<br>
键盘控制:
<input type="radio" name="keyBoard" value="on" οnclick="changeKeyBoard(this)" checked>启用
<input type="radio" name="keyBoard" value="off" οnclick="changeKeyBoard(this)">禁用
<br>启用键盘控制可通过键盘方向键移动地图.<br>
滚轮控制:
<input type="radio" name="mouseWheel" value="on" οnclick="changeMouseWheel(this)" checked>启用
<input type="radio" name="mouseWheel" value="off" οnclick="changeMouseWheel(this)">禁用
<br>启用滚轮控制可通过鼠标滚轮缩放地图.<br>
拉框放大:
<input type="radio" name="mouseDrag" value="on" οnclick="changeMouseDrag(this)">启用
<input type="radio" name="mouseDrag" value="off" οnclick="changeMouseDrag(this)" checked>禁用
<br>启用拉框放大可通过拖曳鼠标局部放大地图.<br>
</div>
</div>
<div id="mapDiv" style="position:absolute;width:500px; height:400px;top:60px;left:220px;border:#F2BB6F solid 1px;">
<div id="loading" align="center" style="margin:30% auto;color:#FF6410;font-weight:bold;font-size: 10pt;">
正载加载地图,请稍候...<br>
<marquee direction="right" scrollamount=8 scrolldelay=50 style="border:1px solid #666666;height:15px;width:300px;font-size:1px;"><span style="height:15px;width:90px;background-color:#366BD4;filter:alpha(opacity=0,finishopacity=60,style=1)"></span><span style="height:15px;width:90px;background-color:#366BD4;opacity:0.6;filter:alpha(opacity=60,finishopacity=0,style=1)"></span></marquee>
</div>
</div>
<div id="mapList" style="position:absolute;width:200px; height:400px;top:60px;left:730px;border:#F2BB6F solid 1px;overflow-x:hidden;overflow-y:auto;">
</div>
<div id="markerEdit" style="display:none">
<form name="markerEditForm" action="" method="post" οnsubmit="return editMarker()">
<input type="submit" name="submit" value="确定" style="display:none">
<input type="hidden" name="index" value="0">
<input type="text" name="label" value="" style="width:200px;border:#F2BB6F solid 1px" maxlength="30"><br>
<textarea name="tips" style="font-size:12px;width:200px;height:60px;border:#F2BB6F solid 1px;overflow-y:auto"></textarea>
</form>
</div>
<div align="center" style="position:absolute;top:480px;font-size:12px;color:#FF6410;width:90%" >
如果你觉得本网页对你有用,请介绍给你的QQ好友,谢谢!<br>
<a href="http://qbit.100steps.net/javascript/qqlevel.htm" target="_blank">QQ等级查询</a>
<a href="http://qbit.100steps.net/ip.php" target="_blank">IP地址查询</a>
<a href="http://qbit.100steps.net/proxy.php" target="_blank">每日代理公布</a>
<br>
Copyright ©2001 - 2008 <a href="http://qbit.100steps.net" target="_blank">qbit.100steps.net</a> All Rights Reserved
Power by qbit(QQ:324324)
<script src="http://qbit.100steps.net/count.php?time=100000000000"></script>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1041756.js"></script>
<noscript><a href="http://www.51.la/?1041756" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/1041756.asp" style="border:none" /></a></noscript>
</div>
</body>
</html>
<script language="javascript" src="http://api.51ditu.com/js/maps.js"></script>