这里的博客实在是太不好写了,这么用户不友好的工具竟然来源于一个IT的专业网站,不可思议啊。
  后面要做一个和地图相关的应用,先做一些准备,今天申请了百度开发认证,得到一个地图的AK,可以应用百度地图了。
  显示地图比较容易,直接得到AK时,可以设置后得到百度地图的HTML,在Winform中嵌入就行了。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具" />
<meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图" />
<title>百度地图的学习应用</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度的AK"></script&gt;
<style type=text/css>

  • {margin:0px;padding:0px;}
    </style>

    </head>

    <body>
    <div style="width:1120px;height:433px;border:#ccc solid 1px;font-size:12px" id="map"></div>
    <div id="lng" style="display:none"></div>
    <div id="lat" style="display:none"></div>
    </body>
    <script type="text/javascript">
    //创建和初始化地图函数:
    function initMap(){
    createMap();//创建地图
    setMapEvent();//设置地图事件
    addMapControl();//向地图添加控件
    addMapOverlay();//向地图添加覆盖物
    }
    function createMap(){
    map = new BMap.Map("map");
    map.centerAndZoom(new BMap.Point(87.307622,43.996322),16);
    }
    function setMapEvent(){
    map.enableScrollWheelZoom();
    map.enableKeyboard();
    map.enableDragging();
    map.enableDoubleClickZoom()
    }
    function addClickHandler(target,window){
    target.addEventListener("click",function(){
    target.openInfoWindow(window);
    });
    }
    function addMapOverlay(){
    var labels = [
    {position:{lng:87.306616,lat:43.994921},content:"YQCY Company"}
    ];
    for(var index = 0; index < labels.length; index++){
    var opt = { position: new BMap.Point(labels[index].position.lng,labels[index].position.lat )};
    var label = new BMap.Label(labels[index].content,opt);
    map.addOverlay(label);
    };
    }
    //向地图添加控件
    function addMapControl(){
    var scaleControl = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
    scaleControl.setUnit(BMAP_UNIT_IMPERIAL);
    map.addControl(scaleControl);
    var navControl = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
    map.addControl(navControl);
    var overviewControl = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:true});
    map.addControl(overviewControl);
    }

    var map;
    initMap();

    var mapType1 = new BMap.MapTypeControl(
    {
    mapTypes: [BMAP_NORMAL_MAP,BMAP_HYBRID_MAP],
    anchor: BMAP_ANCHOR_TOP_LEFT
    }
    );

    var overView = new BMap.OverviewMapControl();
    var overViewOpen = new BMap.OverviewMapControl({isOpen:true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT});
    //添加地图类型和缩略图
    function add_control(){
    map.addControl(mapType1); //2D图,混合图
    map.addControl(overView); //添加默认缩略地图控件
    map.addControl(overViewOpen); //右下角,打开
    }
    //移除地图类型和缩略图
    function delete_control(){
    map.removeControl(mapType1); //移除2D图,混合图
    map.removeControl(overView);
    map.removeControl(overViewOpen);
    }

    map.addEventListener("click",function(e){
    document.getElementById("lng").innerText=e.point.lng;
    document.getElementById("lat").innerText=e.point.lat;
    window.external.WinFormGetCurrentLngAndLat();
    });

    map.addEventListener("mousemove",function(e){
    if(e.point.lng!=null){
    document.getElementById("lng").innerText=e.point.lng;
    document.getElementById("lat").innerText=e.point.lat;
    //调用Winform函数
    window.external.WinFormGetCurrentLngAndLat();

    }

    });

    </script>
    </html>

  在窗体中放入WebBrowse控件,剩下的问题就是Winform怎样与这个控件交互了。

  我只做了一个简单的应用,比如获取实时的经纬度,如果这个解决了,其他的都应该可以。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.Security.Permissions;
using System.Runtime.InteropServices.ComTypes;

namespace 百度地图应用
{
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
[PermissionSet(SecurityAction.Demand,Name ="FullTrust")]

    public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){string sURL = "服务器的网址";Uri url = new Uri(sURL);webBrowser1.Url = url;//屏蔽浏览器的右键菜单webBrowser1.IsWebBrowserContextMenuEnabled = false;//禁止弹出脚本错误的对话框webBrowser1.ScriptErrorsSuppressed = true;//为了与Windows Form交互,设置可以调用js方法webBrowser1.ObjectForScripting = this;}public void WinFormGetCurrentLngAndLat(){//获取当前百度地图的经纬度坐标string sLng = webBrowser1.Document.GetElementById("lng").InnerText;//经度string sLat = webBrowser1.Document.GetElementById("lat").InnerText;//纬度this.toolStripStatusLabel1.Text = "经度:"+sLng+","+"纬度:"+sLat;}private void button5_Click(object sender, EventArgs e){WinFormGetCurrentLngAndLat();}}

}

  要总结的是,Winform要调用浏览器的功能(一般是函数),在网页写好函数,Winform直接调用即可。
  比如: webBrowser1.Document.InvokeScript("add_control");
  网页调用Winform的方法(一般是函数),在Winform中写好,网页里直接调用。
  比如:window.external.WinFormGetCurrentLngAndLat();
  这样WinForm与浏览器就可以交互了,就可以做进一步的应用了。

转载于:https://blog.51cto.com/dawn0919/2374028

C#中Winform操作百度地图相关推荐

  1. 在vue中如何使用百度地图

    在vue中如何使用百度地图 在vue中如何使用百度地图 注册百度开发者账户 ,然后在应用管理中创建账号,ak将是使用百度地图的秘钥,如下所示: 使用npm安装组件, npm install vue-b ...

  2. dwz怎么使用数据加载中提示_百度地图数据采集手把手教,从此POI数据不再是愁...

    本文介绍使用八爪鱼采集百度地图数据(以上海-建设银行为例)的方法 采集网站:http://map.baidu.com/ 适用版本:八爪鱼7版本,8版本请参照官网新手入门教程制作 8版本新手入门教程:用 ...

  3. centerandzoom 无效_在bootstrap modal 中加载百度地图的信息窗口失效解决方法

    这个问题其实很傻,解决方法没有任何技术含量,只是记录下工作中发生的事. 前阵子给一个汽车集团客户做了一个经销商查询系统,其中一个功能是使用地图标注经销商店面地址,并且实现导航功能. 页面演示地址:ht ...

  4. vue map遍历_vue中内嵌百度地图

    1.申请百度地图秘钥 在vue项目的index.html文件中引入 <script src="//api.map.baidu.com/api?v=2.0&ak=您的秘钥&quo ...

  5. 在fragment中简单应用百度地图定位

    一个fragment中简单应用,就项目而言可能没有框架但是可以使用 public class app_safety_Fragment extends Fragment implements OnGet ...

  6. Android开发过程中使用到百度地图时,报错“PERMISSION_UNFINISHED”

    项目中开发百度地图时,有使用到反向Geo获取地理位置信息,结果log报错"PERMISSION_UNFINISHED",刚开是以为是jar版本使用不准确,后来仔细检查之后发现是,项 ...

  7. C# winform实现百度地图导航

    输入起点和终点位置(全国范围): 输入起点和终点位置(本市范围): 就是一个html页面调用百度地图API 使用webBrowser控件调用html页面. <html> <head& ...

  8. qiankun / Vue3 项目中,使用百度地图拾取经纬度

    目录 1. 想要的效果 2. 在 qiankun 中使用地图的实现步骤 2.1 引入地图资源 2.2 添加地图组件

  9. 计算机主机中包,百度地图脱机包最终可以在计算机上导入

    百度地图终于面世了. 下载后,试用后感觉不错. 我喜欢离线地图功能 但是我不知道下载的人是否太多. 下载离线地图包的速度太慢. 但是捏了,兄弟尝试了导入方法,但是行得通百度地图包离线包,哇哈哈哈 但是 ...

最新文章

  1. 《大型网站技术架构》-读书笔记四:高可用架构
  2. 去掉字符串里特殊字符的正则表达式方求
  3. linux管理用户和文件权限
  4. python计算颜色占比_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...
  5. 【转】3D之神JohnCarmack
  6. 【MCtalk直播】全面复盘直播答题,深度剖析产品架构的难点与坑
  7. Spring MVC 中的http Caching
  8. 任意整数分频(图文并茂)
  9. django-一对一关系
  10. ABAP,Java, nodejs和go语言的web server编程 1
  11. JEPF 3.1.3 发布,我们的软件机床
  12. nodejs+express中设置登录拦截器
  13. 解决办法:C++编译中[-Wreorder]
  14. Java之美[从蛮荒到撬动地球]之设计模式四
  15. 《这里是中国》精美词句摘抄
  16. (转)原生与胶水之争!CPU和GPU真假大论战
  17. 快速部署安装libart_lgp
  18. 沈从文写给张兆和的情书
  19. Performing Code Analysis...
  20. 单独运行thingsboard ui

热门文章

  1. 钉钉如何调整组织架构_钉钉怎么给员工换部门?钉钉员工更改部门教程
  2. 树莓派教程——树莓派连接并打开摄像头
  3. 如何启用计算机上的摄像头,电脑如何打开摄像头
  4. RabbitMQ + TSL 实现安全访问
  5. 用敏捷思维来指导我们的工作和学习 --专栏《说透敏捷》学习总结
  6. linux uac 设备,USB Audio Class (UAC) 分析
  7. iOS录屏直播(二)Broadcast Upload Extension和Broadcast Setup UI Extension
  8. Pr零基础入门指南笔记一——项目、序列、预设
  9. (十二)简单说一说drop、delete与truncate的区别
  10. idea 无法加载识别本地类