使用C#调用百度地图并实现坐标点的设置以及读取示例

申请百度地图密钥以及查看百度API

网址:http://lbsyun.baidu.com/apiconsole/key#/home

网址:http://lbsyun.baidu.com/jsdemo.htm#c1_3

程序实现功能:

1、输入网址那可以调用本地的html文件,也可以访问其他网站
2、输入坐标、添加坐标按钮,可以将坐标值传入html文件中,显示在经纬度的文本框中
3、定位按钮可以将地图重新定位,定位中心是文本框内的经纬度
4、添加标注点是将文本框内的经纬度添加坐标到地图
5、删除标注按钮可以删除全部标注点
6、鼠标点击地图,可以在文本框内显示点击的坐标经纬度
7、点击开始实时显示按钮,鼠标在地图上移动,可以获得实时经纬度

最终图

利用webBrowser控件展示地图

VS创建工程,添加控件webBrowser,新建.html文件,.html文件参考百度API,将其写入文件

为了能与JS交互,首先引入using System.Security.Permissions;,然后在namespace下必须加入两行:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]

给窗体一个Load事件、、、这个是功能的主要点
然后窗体运行的代码:

 private void Form1_Load(object sender, EventArgs e)
    {
      try
      {
        //string str_url = Application.StartupPath + "../HTMLPage1.html";// 添加自己添加的html文件名,注意使用相对路径的方法 HTMLPage1.html要复制到debug目录下
        string str_url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";// 添加自己添加的html文件名,注意使用相对路径的方法 HTMLPage1.html要复制到debug目录下
        Uri url = new Uri(str_url);
        webBrowser1.Url = url;     // WebBrowser控件显示的网页路径
        webBrowser1.ObjectForScripting = this;  // 将当前类设置为可由脚本访问

        textBox1.Text = str_url;       

      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
      }
    }

.html文件

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <style type="text/css">
    body, html{
      width: 100%;
      height: 100%;
      overflow: hidden;
      margin: 0;
      font-family: "微软雅黑";
    }
    #allmap {
      height: 97%;
      width: 100%;
    }

    #r-result {
      width: 100%;
      font-size: 14px;
    }
  </style>
  <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script>
  <title>地图展示</title>
</head>
<body>
  <div id="r-result">
    <!--文字和文本框--->
    经度: <input id="longitude" type="text" style="width:100px; margin-right:10px;" />
    纬度: <input id="latitude" type="text" style="width:100px; margin-right:10px;" />
    <!--按钮--->
    <input type="button" value="定位" onclick="theLocation()" />
    <input type="button" value="添加标注" onclick="addPoint()" />
    <input type="button" value="删除标注" onclick="deletePoint()" />
  </div>
  <div id="allmap"></div>

  <b id="mouselng">0</b>
  <b id="mouselat">0</b>

</body>
</html>
<script type="text/javascript">
	// 百度地图API功能
  var map = new BMap.Map("allmap");       // 创建Map实例
  var point = new BMap.Point(120.371, 30.327); // 创建点坐标
  map.centerAndZoom(point, 17);         // 初始化地图,设置中心点坐标和地图级别 

  //向地图添加标注
  var marker = new BMap.Marker(point);    // 创建标注
  map.addOverlay(marker);           // 将标注添加到地图中 

  // 添加带有定位的导航控件
  var navigationControl = new BMap.NavigationControl({
    // 靠左上角位置
    anchor: BMAP_ANCHOR_TOP_LEFT,
    // LARGE类型
    type: BMAP_NAVIGATION_CONTROL_LARGE,
    // 启用显示定位
    enableGeolocation: true
  });
  map.addControl(navigationControl);

  //添加地图单击显示GPS事件
  function showInfo(e) {
    //alert(e.point.lng + ", " + e.point.lat);//窗口显示点击位置的GPS
    document.getElementById("longitude").innerText = e.point.lng;
    document.getElementById("latitude").innerText = e.point.lat; 

    document.getElementById("mouselng").innerHTML = e.point.lng;
    document.getElementById("mouselat").innerHTML = e.point.lat;

  }
  map.addEventListener("click", showInfo);    //监听事件

	//添加地图类型控件
	map.addControl(new BMap.MapTypeControl({
		mapTypes:[
      BMAP_NORMAL_MAP,
      BMAP_HYBRID_MAP
    ]
  }));

  var opts = { offset: new BMap.Size(100, 20) }
  map.addControl(new BMap.ScaleControl(opts));//比例尺控件

  //map.addControl(new BMap.ScaleControl());  //比例尺控件
  map.setCurrentCity("杭州");     // 仅当设置城市信息时,MapTypeControl的切换功能才能可用
  map.enableScrollWheelZoom(true);   //开启鼠标滚轮缩放

  // 用经纬度设置地图中心点
  function theLocation() {
    if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {
      map.clearOverlays();
      var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
      var marker = new BMap.Marker(new_point); // 创建标注
      map.addOverlay(marker);       // 将标注添加到地图中
      map.panTo(new_point);   //用经纬度设置地图中心点
    }
  }

  // 添加标注
  function addPoint() {
    if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {

      var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
      var marker = new BMap.Marker(new_point); // 创建标注
      map.addOverlay(marker);       // 将标注添加到地图中
    }
  }

  // 删除所有标注
  function deletePoint() {

    //获取地图上所有的覆盖物,并删除
    //map.clearOverlays();

    //获取地图上所有的覆盖物,并删除
    var allOverlay = map.getOverlays();
    for (var i = 0; i < allOverlay.length; i++) {
      if (allOverlay[i].toString() == "[object Marker]") {
        map.removeOverlay(allOverlay[i]);
      }
    }

    ////删除指定经纬度的标注
    //if (document.getElementById("longitude").value != "" && document.getElementById("latitude").value != "") {
    //  var new_point = new BMap.Point(document.getElementById("longitude").value, document.getElementById("latitude").value);
    //  var marker = new BMap.Marker(new_point); // 创建标注
    //  map.removeOverlay(marker);

    //}
  }

    map.addEventListener("mousemove", GetlngAndlat);
    function GetlngAndlat(e) {
      if (e.point.lng != null) {

        document.getElementById("mouselng").innerHTML = e.point.lng;
        document.getElementById("mouselat").innerHTML = e.point.lat;
      }
    }

</script>

http://lbsyun.baidu.com/jsdemo.htm#c1_3
百度官方文档给了很多Demo,可根据需求来写

Form1.cs完整代码

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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Permissions;
using System.IO;

namespace map
{
	// 而为了能与JS交互,首先引入using System.Security.Permissions;,然后在namespace下必须加入两行:
  [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]//调用JS代码必要
  [System.Runtime.InteropServices.ComVisibleAttribute(true)]

  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      try
      {
        //string str_url = Application.StartupPath + "../HTMLPage1.html";// 添加自己添加的html文件名,注意使用相对路径的方法 HTMLPage1.html要复制到debug目录下
        string str_url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";// 添加自己添加的html文件名,注意使用相对路径的方法 HTMLPage1.html要复制到debug目录下
        Uri url = new Uri(str_url);
        webBrowser1.Url = url;     // WebBrowser控件显示的网页路径
        webBrowser1.ObjectForScripting = this;  // 将当前类设置为可由脚本访问

        textBox1.Text = str_url;

      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
      }
    }

    private void button1_Click(object sender, EventArgs e)
    {
      //本地文件 MapWinForms\bin\Debug
      //string url = Application.StartupPath + "\\HTMLPage1.html";
      //string url = "C:/Users/12606/Desktop/C#/map/map/HTMLPage1.html";
      //textBox1.Text = url;
      string url = textBox1.Text.ToString();

      //屏蔽js相关错误
      webBrowser1.ScriptErrorsSuppressed = true;

      //导航显示本地HTML文件
      webBrowser1.Navigate(url);

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
      try
      {
        string tag_lng = webBrowser1.Document.GetElementById("mouselng").InnerText;
        string tag_lat = webBrowser1.Document.GetElementById("mouselat").InnerText;
        double dou_lng, dou_lat;
        if (double.TryParse(tag_lng, out dou_lng) && double.TryParse(tag_lat, out dou_lat))
        {
          label2.Text = "当前坐标:" + dou_lng.ToString("F6") + "," + dou_lat.ToString("F6");//保留小数点后6位
        }
      }
      catch (Exception ee)
      { MessageBox.Show(ee.Message); }
    }

    private void btnGetLocation_Click(object sender, EventArgs e)
    {
      if (btnGetLocation.Text == "开启实时坐标")
      {
        timer1.Enabled = true;
        btnGetLocation.Text = "关闭实时坐标";
      }
      else
      {
        btnGetLocation.Text = "开启实时坐标";
        timer1.Enabled = false;
      }

    }

    private void btnGPS_Click(object sender, EventArgs e)
    {
      webBrowser1.Document.GetElementById("longitude").InnerText = textBox_longitude.Text;
      webBrowser1.Document.GetElementById("latitude").InnerText = textBox_latitude.Text;
    }

  }
}

源代码

到此这篇关于使用C#调用百度地图并实现坐标点的设置以及读取示例的文章就介绍到这了,更多相关C#百度地图坐标点读取内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • c#生成站点地图(SiteMapPath)文件示例程序

    复制代码 代码如下: //创建站点地图        private void CreateSiteMap(DataSet ds)        { XmlDeclaration declareation;            declareation = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);            xmlDoc.AppendChild(declareation); XmlElemen

  • C#绘制飞行棋地图小程序

    1. 初始化地图,在绘制时可先将地图进行初始化,用数组来存储关卡的位置,然后利用循环给地图中 关卡所在处赋予代表关卡的值. 关键代码如下 /// <summary> /// 初始化游戏地图 /// </summary> static void InitialMap() { for (int i=0;i<Map.Length;i++) { Map[i] =0; } //用于存储关卡位置 int[] luckyTurn = { 6, 23, 40, 55, 69, 83,98 }

  • 基于C# 网站地图制作

    1. 我们的网站是用C#开发的,我们采用数据库存储所有文章信息.所以我们的文章都是动态地从数据库中提取出来的.这点很不利于蜘蛛的顺藤摸瓜. 2. 这点嘛,嘿嘿,就有些勉强了.做个网站地图,可以让用户对敝网站的内容一目了然,能起到很好的导航作用. 鉴于上述原因,于是乎,俺就决定为俺地"赤兔英语网"做一个网站地图.由于Google等搜索引擎所需的网站地图必须是XML文件,所以俺决定做网页形式和XML形式两种网站地图.我们的网站是用C#开发的,当然是使用C#语言来编写俺地网站地图了,赫赫.

  • C#开发Android百度地图手机应用程序(多地图展示)

    一.简介 地图控件自v2.3.5版本起,支持多实例,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰. 文件名:Demo04MultiMapView.cs 简介:介绍多MapView的使用 详述:在一个界面内,同时建立四个TextureMapView控件: 二.示例 1.运行截图 在x86模拟器中的运行效果如下: 在上一节例子的基础上,只需要再增加下面的步骤即可. 2.添加demo05_multimap.axml文件 在layout文件夹下添加该文件,将其改为

  • C#生成sitemap站点地图的方法

    Sitemaps是Google的一个和网站管理员相关的工具,有点象BLOG的RSS功能,是一个方便自己的服务,如果大家都采用了这种方式提交自己的更新的话,Google就再也不用派出那么多爬虫辛辛苦苦的到处乱窜了,任何一个站点,只要有更新,便会自动"通知"Google,方便Google进行索引. 好像最近BAIDU也开始支持XML格式的sitemap的站点地图了. 目前网络上有很多免费的生成sitemap站点地图的工具,使用起来也比较方便.其原理就是抓取你指定的页面,获取页面上所有的链接

  • 如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)

    以下是使用js代码实现百度地图计算两地距离,代码如下所示: <script src="js/jquery-1.9.0.js" type="text/javascript" language="javascript"></script> <script language="javascript" type="text/javascript" src="js/area.j

  • c#使用windows服务更新站点地图的详细示例

    由于公司平台访问人数逐渐增多,公司项目的数据库已经几次出现宕机现象.为减轻数据库压力,我上个月对公司项目做了下调整.把新闻板块提取出来单独一个站点,单独一个数据库.减少了主站点和数据库的负担和压力. 但放在线上一个月,新闻新的发布数量最少已经有500篇左右.百度只收录了70个左右,于是想到可能是没有站点地图造成的.但怎么定时更新站点地图呢? 我尝试使用windows服务来定时更新站点地图. 首先需要了解下几个问题. 1.百度收录的站点地图(sitemap)的格式.详情请查看该链接:查看 目前我只

  • c#调用arcgis地图rest服务示例详解(arcgis地图输出)

    1.使用步骤 1)构建请求网址 A.确定端点:每个GIS服务都有一个端点.例如,ArcGIS Server上Demographics文件夹下名为ESRI_Census_USA的一个地图服务sampleserver1.arcgisonline.com的端点为:http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer. B.确定操作:不同地理信息系统服务支持不同的

  • 使用C#调用百度地图并实现坐标点的设置以及读取示例

    申请百度地图密钥以及查看百度API 网址:http://lbsyun.baidu.com/apiconsole/key#/home 网址:http://lbsyun.baidu.com/jsdemo.htm#c1_3 程序实现功能: 1.输入网址那可以调用本地的html文件,也可以访问其他网站 2.输入坐标.添加坐标按钮,可以将坐标值传入html文件中,显示在经纬度的文本框中 3.定位按钮可以将地图重新定位,定位中心是文本框内的经纬度 4.添加标注点是将文本框内的经纬度添加坐标到地图 5.删除标

  • js调用百度地图及调用百度地图的搜索功能

    js调用百度地图的方法 代码如下: <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&

  • WinForm调用百度地图接口用法示例

    本文实例讲述了WinForm调用百度地图接口用法.分享给大家供大家参考,具体如下: 1.首先用一个html文件调用百度地图接口(主要注册一个序列号): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www

  • python调用百度地图WEB服务API获取地点对应坐标值

    本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 最终结果是写入了txt文件,所以需要在循环遇到错误的时候写入对应的可识别的值(看到这个值就知道这个结果是错误的,可以写对应数量的NA或者0值),方便后续分析. # -*- coding: utf-8 -*- """ Created on Fri Aug 15 10:06:16

  • 详解用Python调用百度地图正/逆地理编码API

    一.背景 (正)地理编码指的是:将地理位置名称转换成经纬度: 逆地理编码指的是:将经纬度转换成地理位置信息,如地名.所在的省份或城市等 百度地图提供了相应的API,可以方便调用.相应的说明文档如下: 正地理编码 逆地理编码 具体API的参数可以查看相应的"服务文档": 不过首次使用时需要申请,具体在控制台.申请AK的方式可参见其他文章. 二.源码 废话不多说,直接放源码.这里提供了Python调用这两个API的方法. #!/usr/bin/env python # -*- coding

  • Android 调用百度地图API示例

    Android 调用百度地图API 一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下载自己想要的功能包我这里选了三个 3.获取密钥 获取密钥之前我们要新建一个应用 填写好相关的信息 二. 新建一个项目工程 1. 把下载好的百度sdk中的jar包拷贝到项目的libs目录下 2.在application中添加开发密钥 3.添加所需的权限 <uses-

  • 详解vue项目中调用百度地图API使用方法

    步骤一:申请百度地图密钥: JavaScript API v1.4以及以前的版本无序申请秘钥(ak),自v1.5版本开始需要先申请秘钥(ak),才可以使用,如需获取更高的配额,需要申请  认证企业用户.百度地图API 链接地址:http://lbsyun.baidu.com/apiconsole/key 步骤二:在index.html中添加百度地图JavaScript API接口: <script src="http://api.map.baidu.com/api?v=1.4"

  • vue中调用百度地图获取经纬度的实现

    项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图. 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 查询获取经纬度 前期准备 首先,我们需要取百度官方申请一个地图api秘钥,https://lbsyun.baidu.com/apiconsole/key 进入后在应用管理,我的应用去申请即可. 申请好以后,我们打开vue项目中public文件下的index.html文件,拼接百度AK值并引入 <script type=&quo

  • C#调用百度地图API根据地名获取经纬度geocoding

    目录 前言 步骤 一.到百度地图开放平台注册认证,并创建应用,获取ak 二.查看api文档 三.创建GeocodingMap类,根据地名获取经纬度 参考 前言 公司的一个内部网站维护,需要根据地名填写经纬度,最终同echarts生成地图. 之前数据比较少,直接经纬度查询查的,https://jingweidu.bmcx.com/ 现在数据越来越多,手动查询太麻烦,于是想到通过地图api批量查询,最后选择了百度地图API. 步骤 一.到百度地图开放平台注册认证,并创建应用,获取ak 百度地图开放平

  • 如何调用百度地图API实现手机自动定位

    最近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.经过2天研究和咨询,找到了解决方案,在此备忘一下. //声明地址解析器 var geoc = new BMap.Geocoder(); //自动定位 var autoLocation = function () { if (navigator.geolocation) { //判断浏览器是否能获取当前位置 nav

随机推荐