日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【百度地图API】如何制作可拖拽的沿道路测距

發(fā)布時間:2024/9/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【百度地图API】如何制作可拖拽的沿道路测距 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要:

地圖測距,大家都會,不就map.getDistance麼。可是,這只能測任意兩點的直線距離,用途不夠?qū)嶋H啊。比如,我想測試北京天安門到北京后海的距離,怎么辦呢?

顯然“沿道路測距”就顯得尤為重要了。那么如果制作“可拖拽”的沿道路測距呢?我們一起來看一看。

---------------------------------------------------------------------------------------

一、創(chuàng)建地圖

只需要三步,即可創(chuàng)建一張地圖。示例:http://dev.baidu.com/wiki/static/map/API/examples/index.html?

//初始化地圖
var map =new BMap.Map("container");
var point =new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);

二、創(chuàng)建兩個可拖拽的標注

先創(chuàng)建點,再把標注創(chuàng)建在該點上。最后添加標注在地圖上。

讓標注可拖拽的方法是:

然后確定這兩個標注可以拖拽。

代碼如下:

//創(chuàng)建兩個可以拖動的標注
var p1 =new BMap.Point(116.388398,39.897445);
var p2 =new BMap.Point(116.331398,39.836445);
var m1 =new BMap.Marker(p1);
var m2 =new BMap.Marker(p2);
map.addOverlay(m1);
map.addOverlay(m2);
m1.enableDragging(); //標注可拖拽的設置
m2.enableDragging();

三、沿道路測距

創(chuàng)建駕車導航,在回調(diào)函數(shù)里設置距離的輸出。

寫個函數(shù)用來打開測距功能。

注意:起點和終點,要從改變位置后的marker里取。類參考如下:

代碼如下:

//駕車導航用來計算沿道路的距離
var searchComplete =function (results){
if (transit.getStatus() != BMAP_STATUS_SUCCESS){
return ; }
var plan = results.getPlan(0);
output ="<b style='color:red;'>"+ plan.getDistance(true) +"</b>"; //獲取距離
}
var transit =new BMap.DrivingRoute(map, {renderOptions: {map: map},
onSearchComplete: searchComplete,
onPolylinesSet: function(){
setTimeout(function(){document.getElementById("myDistance").innerHTML = output;},"100"); //打印總路程
}});

//測距按鈕
function myFigure(){
transit.search(m1.getPosition(), m2.getPosition()); //兩個紅色標注之間的沿道路測距
}

四、清除結(jié)果

為了下一次的測距,我們需要清除這一次的導航結(jié)果,和測距結(jié)果。

代碼如下:

//重新測距的按鈕
function myClear(){
transit.clearResults(); //清除導航結(jié)果
document.getElementById("myDistance").innerHTML =""; //清除總路程的文字
}

五、網(wǎng)頁結(jié)構(gòu)

需要寫兩個安妮,一個用來計算距離,另一個用來清除數(shù)據(jù)。

還有一個展示測距結(jié)果的容器。

<input type="button" value="重新開始" onclick="myClear();"/>
<input type="button" value="計算距離" onclick="myFigure();"/>
<p>總路程是:<span id="myDistance"></span></p>
<div style="width:520px;height:340px;border:1px solid gray" id="container"></div>
<p>使用說明:</p>
<ol>
<li>紅色標注可拖拽</li>
<li>點擊“計算距離”按鈕,開始測距。結(jié)果用紅色文字標出</li>
<li>點擊“重新開始”按鈕,清除測距結(jié)果</li>
</ol>

六、全部源代碼

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>可拖拽的沿道路測距</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<input type="button" value="重新開始" onclick="myClear();"/>
<input type="button" value="計算距離" onclick="myFigure();"/>
<p>總路程是:<span id="myDistance"></span></p>
<div style="width:520px;height:340px;border:1px solid gray" id="container"></div>
<p>使用說明:</p>
<ol>
<li>紅色標注可拖拽</li>
<li>點擊“計算距離”按鈕,開始測距。結(jié)果用紅色文字標出</li>
<li>點擊“重新開始”按鈕,清除測距結(jié)果</li>
</ol>
</body>
</html>
<script type="text/javascript">
//初始化地圖
var map =new BMap.Map("container");
var point =new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);

//創(chuàng)建兩個可以拖動的標注
var p1 =new BMap.Point(116.388398,39.897445);
var p2 =new BMap.Point(116.331398,39.836445);
var m1 =new BMap.Marker(p1);
var m2 =new BMap.Marker(p2);
map.addOverlay(m1);
map.addOverlay(m2);
m1.enableDragging(); //標注可拖拽的設置
m2.enableDragging();


//駕車導航用來計算沿道路的距離
var searchComplete =function (results){
if (transit.getStatus() != BMAP_STATUS_SUCCESS){
return ; }
var plan = results.getPlan(0);
output ="<b style='color:red;'>"+ plan.getDistance(true) +"</b>"; //獲取距離
}
var transit =new BMap.DrivingRoute(map, {renderOptions: {map: map},
onSearchComplete: searchComplete,
onPolylinesSet: function(){
setTimeout(function(){document.getElementById("myDistance").innerHTML = output;},"100"); //打印總路程
}});

//測距按鈕
function myFigure(){
transit.search(m1.getPosition(), m2.getPosition()); //兩個紅色標注之間的沿道路測距
}

//重新測距的按鈕
function myClear(){
transit.clearResults(); //清除導航結(jié)果
document.getElementById("myDistance").innerHTML =""; //清除總路程的文字
}
</script>

七、測兩點的直線距離

百度地圖API的官網(wǎng)上,有一個lib,是測試直線距離的。所以,這里就不多說了。

鏈接:http://dev.baidu.com/wiki/map/index.php?title=lib/DistanceTool

總結(jié)

以上是生活随笔為你收集整理的【百度地图API】如何制作可拖拽的沿道路测距的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。