C#编程学习(06):使用百度API进行路径规划

简介: C#编程学习(06):使用百度API进行路径规划

官方demo连接:http://lbsyun.baidu.com/jsdemo.htm#i5_9

在C#中使用webbroswer进行地图显示,并利用百度地图API进行路径规划;先上效果图

image.png

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)目前只是照葫芦画瓢,只是迈出了一小步,规划的路径存明显不是最优;还应深入研究其内部机理,多参考资料进行改善

相关文章
|
2月前
|
设计模式 开发框架 安全
C# 一分钟浅谈:GraphQL API 与 C#
本文介绍了 GraphQL API 的基本概念及其优势,并通过 C# 实现了一个简单的 GraphQL 服务。GraphQL 是一种高效的 API 查询语言,允许客户端精确请求所需数据,减少不必要的数据传输。文章详细讲解了如何使用 `GraphQL.NET` 库在 C# 中创建和配置 GraphQL 服务,并提供了常见问题的解决方案和代码示例。
54 4
|
2月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
41 3
|
6天前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
92 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
2月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
3月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
85 7
|
1天前
|
人工智能 数据可视化 API
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
105 1
|
11天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
55 12
|
2月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
61 4
|
4月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
4月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
55 2