Bing必应地图中国API-放大与平移
2011-05-24 14:26:32| 分类: Bing&Google|字号 订阅
有些时候我们不希望通过默认的控制栏来控制地图,而是希望能够自定义放大、缩小按钮。比如在显示某公司的位置时,公司老总只希望别人能够以公司位置为中心放大、缩小地图。
所需要做的很简单,增加两个函数:放大和缩小。
function DoZoomIn(c)
{
map.ZoomIn();
}
function DoZoomOut()
{
map.ZoomOut();
}
然后在html boy中增加两个按钮:
<div>
<input type='button' value='放大' onclick='DoZoomIn();' />
<input type='button' value='缩小' onclick='DoZoomOut();'/>
</div>
或者,我们想直接指定地图放大的级别,我们可以另外写一个函数:
function DoZoom()
{
var zoom = document.getElementById('zoomLevel').value;
map.SetZoomLevel(zoom);
}
然后在html body中增加一个输入框让用户输入放大级别,以及一个按钮:
<div>
放大级别:<input id='zoomLevel' type='text' style='15px;' value='10' />
<input type='button' value='显示' onclick='DoZoom();' />
</div>
最小放大级别为1,即显示世界地图。最大放大级别为17。此处初始值设置为10,能够显示北京全貌。
最后,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://dev.ditu.live.com/mapcontrol/mapcontrol.ashx?v=6.1"></script>
<script type="text/javascript">
var map = null;
function GetMap()
{
map = new VEMap('myMap');
map.LoadMap();
}
function DoZoomIn(c)
{
map.ZoomIn();
}
function DoZoomOut()
{
map.ZoomOut();
}
function DoZoom()
{
var zoom = document.getElementById('zoomLevel').value;
map.SetZoomLevel(zoom);
}
</script>
</head>
<body onload="GetMap();">
<div id='myMap' style="position:relative; 600px; height:480px;"></div>
<div>
<input type='button' value='放大' onclick='DoZoomIn();' />
<input type='button' value='缩小' onclick='DoZoomOut();'/>
</div>
<div>
放大级别:<input id='zoomLevel' type='text' style='15px;' value='10' />
<input type='button' value='显示' onclick='DoZoom();' />
</div>
</body>
</html>
本讲将展现三种平移方式:经纬度直接平移、手动平移,以及连续平移。
首先我们来看一下经纬度直接平移,我们定义一个平移函数:
function PanLatLong(c)
{
var lat = document.getElementById('txtMapLat').value;
var lon = document.getElementById('txtMapLon').value;
map.PanToLatLong(new VELatLong(lat, lon));
}
平移的经纬度从输入框获取,因此需要在html body中增加两个输入框,对应ID分别为txtMapLat和txtMapLon:
<div>
维度:<input id='txtMapLat' style=' 30px' type='text' value='36' />
经度:<input id='txtMapLon' style=' 30px' type='text' value='105' />
<input type='button' value='经纬度平移' onclick='PanLatLong();' />
</div>
第二个功能是手动平移,由用户输入以当前地图为中心平移量的大小。同样,我们需要定义一个函数:
function PanXY()
{
var x = document.getElementById('txtMapX').value;
var y = document.getElementById('txtMapY').value;
map.Pan(x,y);
}
我们在html body域增加两个输入框,允许用户输入平移量,ID分别为txtMapX和txtMapY:
<div>
X:<input id='txtMapX' style=' 30px' type='text' value='1' />
Y:<input id='txtMapY' style=' 30px' type='text' value='1' />
<input type='button' value='手动平移' onclick='PanXY();' />
</div>
接下来我们看一下连续平移的实现方法。连续平移在很多地方可以应用,比如在线旅游,显示用户旅游线路的时候可以通过连续平移的方法直观显示用户的足迹。此处我们需要定义两个函数:开始平移和结束平移:
function StartContinuous()
{
var x = document.getElementById('txtMapXspeed').value;
var y = document.getElementById('txtMapYspeed').value;
map.StartContinuousPan(x,y);
}
function EndContinuous()
{
map.EndContinuousPan();
}
然后,我们在html body域增加两个按钮,分别对应开始平移和结束平移。并提供一个输入框,允许用户输入连续平移的速度:
<div>
X (speed):<input id='txtMapXspeed' style=' 30px' type='text' value='1' />
Y (speed):<input id='txtMapYspeed' style=' 30px' type='text' value='1' />
<input type='button' value='开始连续平移' onclick='StartContinuous();' />
<input type='button' value='结束连续平移' onclick='EndContinuous();' />
</div>
引用:http://www.htchen.com/post/4.html