PC端地图Hybird应用开发(百度地图API+C#+JavaScript)

2023-11-18

接了一个外包,让我做地图系统。采用C#嵌套JavaScript编程,为Hybird应用,框架内存是基于winform,调用了控件webbrowser,webbrowser解释、渲染html文件,JavaScript脚本。地图采用百度地图API,通过http加密Ak请求,获得真实的基础地图,定位点则根据坐标点定位,动效是使用JavaScript完成。JavaScript链接sql server

github源码:https://github.com/QQ951127336/Hybird_map

1.vs新建一个winform项目

form.designer.cs,调一个webbrowser控件

namespace map
{
    partial class map
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {


            if (disposing && (components != null))
            {

                components.Dispose();

            }

            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.webBrowser1 = new System.Windows.Forms.WebBrowser();
            this.SuspendLayout();
            // 
            // webBrowser1
            // 
            this.webBrowser1.Location = new System.Drawing.Point(0, 0);
            this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
            this.webBrowser1.Name = "webBrowser1";
            this.webBrowser1.Size = new System.Drawing.Size(1474, 1229);
            this.webBrowser1.TabIndex = 0;
            this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
            // 
            // map
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 20F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1500, 1400);
            this.Controls.Add(this.webBrowser1);
            this.Name = "map";
            this.Text = "虎丘区银行查询系统";
            this.Load += new System.EventHandler(this.虎丘区银行查询系统_Load);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.WebBrowser webBrowser1;

    }
}

2.webbrowser的navigate方法导入html文件路径,然后就可以开始用js写内容了。

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;

namespace map
{
    public partial class map : Form
    {
        public map()
        {
            InitializeComponent();
            string path = System.Environment.CurrentDirectory;

            this.webBrowser1.Navigate(path+"\\map.html");
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

        }

        private void 虎丘区银行查询系统_Load(object sender, EventArgs e)
        {

        }
    }
}

3.建立html框架和申请百度ak

ak申请地址:
http://lbsyun.baidu.com/apiconsole/key
html文件

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

  <body>
    <!--百度地图容器-->
    <div style="width:700px;height:550px;border:#ccc solid 1px;font-size:12px" id="map"></div>
    <p style="color:red;font-weight:600">地图生成工具基于百度地图JS api v2.0版本开发,使用请申请密匙。
      <a href="http://developer.baidu.com/map/index.php?title=jspopular/guide/introduction" style="color:#2f83c7" target="_blank">了解如何申请密匙</a>
      <a href="http://lbsyun.baidu.com/apiconsole/key?application=key" style="color:#2f83c7" target="_blank">申请密匙</a>
    </p>
  </body>
  <script type="text/javascript">
    //创建和初始化地图函数:
    function initMap(){
      createMap();//创建地图
      setMapEvent();//设置地图事件
      addMapControl();//向地图添加控件
      addMapOverlay();//向地图添加覆盖物
    }
    function createMap(){ 
      map = new BMap.Map("map"); 
      map.centerAndZoom(new BMap.Point(116.403874,39.914889),12);
    }
    function setMapEvent(){
      map.enableScrollWheelZoom();
      map.enableKeyboard();
      map.enableDragging();
      map.enableDoubleClickZoom()
    }
    function addClickHandler(target,window){
      target.addEventListener("click",function(){
        target.openInfoWindow(window);
      });
    }
    function addMapOverlay(){
    }
    //向地图添加控件
    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();
  </script>
</html>

这样大致就做好了一个地图,接着就是百度地图的jsAPI了

页面跳转

window.location.href='map.html';//引号里面填跳转的文件

添加了一个sqlserver数据库连接

conn.Open(“Provider=SQLOLEDB.1;Data Source=127.0.0.1,1433;User ID=sa;Password=school1234567890;Initial Catalog=Highschool”);
provider 是驱动,Data source是地址和端口,然后是用户和密码,以及数据库名。
在通过 Execute(“数据库语句”)操纵数据库。


    function connDB(){

        conn = new ActiveXObject("ADODB.Connection");
        conn.Open("Provider=SQLOLEDB.1;Data Source=127.0.0.1,1433;User ID=sa;Password=school1234567890;Initial Catalog=Highschool");
        var x_sql = conn.Execute("select x from bank");
        var y_sql = conn.Execute("select y from bank");
        var name_sql = conn.Execute("select name from bank");
        var local_sql = conn.Execute("select local from bank");
        var phone_sql = conn.Execute("select phone from bank");
        var img_sql = conn.Execute("select image from bank;");
        if(time<x_sql.Fields.Count)
            time = x_sql.Fields.Count;

        var i = 0;
        while(!x_sql.EOF){


        banks[bank_amount] = new bank (x_sql.Fields(i).value,y_sql.Fields(i).value,name_sql.Fields(i).value,local_sql.Fields(i).value,phone_sql.Fields(i).value,img_sql.Fields(i).value);
        x_sql.moveNext();
        y_sql.moveNext();
        name_sql.moveNext();
        local_sql.moveNext();
        phone_sql.moveNext();
        img_sql.moveNext();

        bank_amount++;
        } 



    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PC端地图Hybird应用开发(百度地图API+C#+JavaScript) 的相关文章

随机推荐

  • 如何创建http端口监听_比Minikube更快,使用Kind快速创建K8S学习环境

    简述 K8S 如火如荼的发展着 越来越多人想学习和了解 K8S 但是由于 K8S 的入门曲线较高很多人望而却步 然而随着 K8S 生态的蓬勃发展 社区也呈现了越来越多的部署方案 光针对生产可用的环境就有好几种部署方案 对于用来测试和学习环境
  • PHP秒杀系统 高并发 高性能的极致挑战 下载

    第1章 课程介绍 秒杀系统在各种网站和应用中经常会用到 本课程从基本的系统设计和基础功能开始教导大家用PHP来设计和实现秒杀系统 并且为海量并发提供更高级的技术方案和实现手段 第2章 系统技术选型分析 本章节需要大家掌握基础的LNMP平台的
  • RAC Failover三种方式

    1 Client Side Connect Time Failover 1 1 在用户端tnsname中配置了多个地址 用户发起连接请求时 会先尝试连接地址表中的第一个地址 如果这个连接尝试失败 则继续尝试使用第二个地址 直至连接成功或者遍
  • CSAPP——2.2整数表示

    两种整数 1 非负数 unsigned 2 负数 0 正数 T 补码 B 二进制 U 无符号数 1 整数数据类型 unsigned char short int long int32 t int64 t 2 无符号数的编码 假设位向量 x
  • 【Unity】2D太空登录小游戏开发入门教程(下)

    Unity 是一款非常流行且用途广泛的游戏引擎 拥有一长串受支持的平台和设备 3D 游戏可能是您谈到 Unity 时的第一个想法 该引擎甚至曾经被称为Unity 3D 但是 大部分移动 主机和桌面游戏都是以 2D 形式呈现的 因此了解 Un
  • 考研政治——选择题判断原则

    博主个人感觉政治的选择题答案真的不用背诵 而且付出与收获完全是绝对失衡的 大家做选择题时如果明确知道答案最好 但若不确定 这里博主分享一些个人总结的做题经验或可以说是筛选原则 练习时单选题尽量不要错 多选题保持在7个以内 文章目录 马原 毛
  • Inno Setup 系列之安装、卸载时调用bat

    需求 想在安装的时候调用install bat 在卸载的时候调用uninstall bat 解决 可以这样写 Inno Setup 的脚本 Setup NOTE The value of AppId uniquely identifies
  • Java中的OOP

    OOP Object Oriented Programming 是面向对象编程 OOP特征分别是封装 继承 多态 1 封装 保护内部的操作不被破坏 2 继承 在原本的基础之上继续进行扩充 3 多态 在一个指定的范围之内进行概念的转换 Jav
  • C++ 重载、覆盖、隐藏

    C 重载 覆盖 隐藏 重载 覆盖和隐藏是C 中容易混淆的概念 作为C 研发人员有必要了解其区别和实现 以下结合概念和源码加以说明 1 重载 重载指同一个类或者范围内 被声明的同名函数其参数数量或者类型不同 使用时根据函数参数列表确定调用哪个
  • 使用ifconfig结合awk提取主机的IP地址方法

    ifconfig是用来配置或者显示网卡信息的工具 可以提供与ip a类似的功能 在CentOS7以后的版本里 ifconfig是默认没有安装的 需要安装net tools工具 我们可以借助ifconfig工具 使用下面简单的脚本来完成主机I
  • 如何使用cd命令

    转自http jingyan baidu com article 8cdccae99f3d46315513cd47 html 以下适用于windows环境 cd就是change directory的缩写 即改变目录 讲cd命令之前 先来看看
  • 【Linux】Systemd+rc.local设置开机自启动

    1 问题描述 ubuntu18 04不再使用 inited 管理系统 改用 systemd 启动时 默认不再使用调用 etc rc local 如果想开机时调用 etc rc local 需要修改systemd的配置 2 解决方法 2 1
  • 任意进制之间的转换(C++实现)

    任意进制之间的转换 C 实现 题目描述 输入格式 第一行输入两个整数 n 和 m 2 lt n m lt 16 n 代表的是第二行输入的数的进制 m 代表的是输出的数字的进制 第二行输入一个x 如果有字母 输入大写字母 输出格式 输出一个
  • PCA主成分分析

    PCA主成分分析 优点 降低数据的复杂性 识别最重要的多个特征 缺点 不一定需要 且可能损失有用信息 适用数据类型 数值型数据 PCA背景知识 移动坐标轴 考虑上图中的大量数据点 如果要求我们画出一条直线 这条线要尽可能覆盖这些点 那么最长
  • 在Matlab实现Kmeans算法(每行代码带注释)

    目录 一 前言 二 VQ概述 三 Kmeans算法 K means 的算法步骤为 四 Matlab代码实现过程 五 一点点可选改动 个人看法 参考链接 一 前言 本人对机器学习 人工智能算法方面没什么研究 只是学习过程中恰好碰到了 一开始看
  • 哪款 Linux 才是更好的 CentOS 替代品?

    AlmaLinux 是基于 RHEL 的企业级 Linux 发行版 以下是选择 AlmaLinux 作为 CentOS 替代方案的一些原因 CentOS 将于 2024 年 6 月到期 截至 2022 年 它为世界各地的许多服务器支持 事实
  • idea提示非法字符

    问题 解决方法 将编码格式UTF 8 BOM文件转为普通的UTF 8文件 一 简单方法 在AS右下角 将编码改为GBK 再转为UTF 8 可以解决 二 可以用EditPlus 1 将文件用EditPlus打开 然后选择Document 文件
  • 点积,内积,哈达玛积的区别

    哈达玛积哈达玛积 Hadamard product 是矩阵的一类运算 若A aij 和B bij 是两个同阶矩阵 若cij aij bij 则称矩阵C cij 为A和B的哈达玛积 或称基本积 乘完之后还是矩阵 点积点积在数学中 又称数量积
  • Unity_场景之间的跳转

    跳转场景之前 需要在 File gt Build Settings gt Add Open Scenes 或者 直接把 场景 拖拽进来 跳转场景方法1 已过时 跳转场景方法 public void OnStartGame string Sc
  • PC端地图Hybird应用开发(百度地图API+C#+JavaScript)

    接了一个外包 让我做地图系统 采用C 嵌套JavaScript编程 为Hybird应用 框架内存是基于winform 调用了控件webbrowser webbrowser解释 渲染html文件 JavaScript脚本 地图采用百度地图AP