C#程式設計學習(06):使用百度API進行路徑規劃
阿新 • • 發佈:2018-12-19
官方demo連線:http://lbsyun.baidu.com/jsdemo.htm#i5_9
在C#中使用webbroswer進行地圖顯示,並利用百度地圖API進行路徑規劃;先上效果圖
1 HTML檔案的編寫
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} #l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} #r-result{height:100%;width:20%;float:left;} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=需要自己申請百度API"></script> <!--載入百度API函式--> <script type="text/javascript" src="DrawingManager_min.js"></script> <!--載入繪製工具--> <script src="DistanceTool_min.js" type="text/javascript"></script> <!--//載入測距工具--> <title>百度地圖的Hello, World</title> </head>
2 Javascript指令碼程式碼
<script> function GENERATE_ROUTE(e) { //map.addEventListener("click", showPoly); map.addEventListener("click", generate_rout); } function generate_rout() { var p1 = new BMap.Point(121.443532,31.24603); var p2 = new BMap.Point(121.481477,31.240103); var p3 = new BMap.Point(121.493262,31.237015); var p4 = new BMap.Point(121.49639,31.22762); var p5 = new BMap.Point(121.489382,31.225034); var p6 = new BMap.Point(121.512953,31.219846); var p7 = new BMap.Point(121.510222,31.228122); var p8 = new BMap.Point(121.520715,31.232198); var p9 = new BMap.Point(121.515828,31.239485); var p10 = new BMap.Point(121.498724,31.238868); var pointList = [] ; pointList.push(p1);pointList.push(p2);pointList.push(p3);pointList.push(p4);pointList.push(p5); var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}}); for(c=0;c<pointList.length;c++){ var marker = new BMap.Marker(pointList[c]); map.addOverlay(marker); //將途經點按順序新增到地圖上 var label = new BMap.Label(c+1,{offset:new BMap.Size(20,-10)}); marker.setLabel(label); } //driving.search(p1, p5,{waypoints:["華盛小亭","上海科技京城", "豫園"]}); driving.search(p1, p10,{waypoints:[p2,p3,p4,p5,p6,p7,p8,p9]}); } </script>
3 c#新增互動程式碼
private void generateRout_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("generate_rout");
}
4注意事項
(1)引用的新增
//新增引用: using System.Security.Permissions; //許可及com可見 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")] [System.Runtime.InteropServices.ComVisibleAttribute(true)]
(2)存在缺陷:
1)每次更新座標需要重新生成exe,十分不便捷
2)百度API提供的起點、終點及經過點覆蓋自己定義的標記資訊,可作進一步改善
3)目前只是照葫蘆畫瓢,只是邁出了一小步,規劃的路徑存明顯不是最優;還應深入研究其內部機理,多參考資料進行改善