在进行百度地图API开发之前你需要到http://developer.baidu.com/map申请密匙

密匙申请之后就可以进行百度地图API的开发了。

下面我们以在visual c++6.0里进行地图坐标标注为范例讲解百度地图API开发

1.新建一个工厂MFC工程取名为GeoDemo

2.选择为基于对话框的工程

3.创建成功如下

4.简单调整页面布局

5.在界面插入一个浏览器控件

6.插入之后的效果

7.先运行一下看看

8.接下来我们写一个简单的html页面,代码大概如下

其中也包括一个javascript函数,不会写的可参考http://developer.baidu.com/map/jsdemo.htm#a1_2

我们把这个html文件命名为geodemo.html并放置到工程目录下:

html源码为:

 <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<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=你自己申请的密匙"></script>
<title>百度地图的Hello, World</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(104.071216,30.666031), 12);
map.enableScrollWheelZoom(); //启用滚轮放大缩小
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.OverviewMapControl());
map.addControl(new BMap.ScaleControl());
map.enableScrollWheelZoom();
map.addControl(new BMap.MapTypeControl()); var top_left_navigation = new BMap.NavigationControl(); //左上角,添加默认缩放平移控件 function justmarkfun(JD,WD)
{
var marker1 = new BMap.Marker(new BMap.Point(JD,WD)); // 创建标注
window.map.addOverlay(marker1); // 将标注添加到地图中
}
</script>

当然里面的一些属性可参考百度地图API说明进行编写,我使用的是javascript 大众版本

大家可以根据自己的需要选择不同类型的API

这里我将地图的初始中心定位在成都,关于经纬度的查询可以到网站:http://api.map.baidu.com/lbsapi/getpoint/index.html

9.我们继续为对话框的浏览器控件关联一个控件变量为m_myweb

当然同时会提示添加CWebBroswer2类头文件和源文件

10.为显示该点添加响应

11.在CGeoDemoDlg的OnInitDialog()函数中添加如下代码:

注意,html文件要以url方式

12.导入CWebPage类,该类为C++提供了一种javascript接口

我们来看一个CWebPage一个简单的接口说明:

 bool CallJScript(const CString strFunc,const CString strArg1,const CString strArg2,CComVariant* pVarResult = NULL);

第一个参数代表要调用的js函数的函数名

第二个第三个参数代表要传入的参数,显然我们应该讲经度和纬度传入其中

最后一个是js调用的返回值

13.将webpage.h头文件包含到CGeoDemoDlg.cpp中同时在OnShow()添加如下代码:

这里m_JD和m_WD是与编辑框控件的两个CString类型变量,传入经度纬度值

这里参数的个数要与javascript函数justmakefun函数的个数相同,而且顺序

要保持一致

javascript代码如下:

 function justmarkfun(JD,WD)
{
var marker1 = new BMap.Marker(new BMap.Point(JD,WD)); // 创建标注
window.map.addOverlay(marker1); // 将标注添加到地图中
}

要编写其他功能的js函数参考百度地图API相应的接口参考

14.现在我们在坐标拾取工具中找到川大的坐标104.089038,30.638195

输入到经纬度中并执行:

大功告成!

关于Demo源码联系我vpoet_sir@163.com

基于MFC与第三方类CWebPage的百度地图API开发范例的更多相关文章

  1. 深入浅出百度地图API开发系列(1):前言

    百度地图API目前在地图API领域越来越受到众多开发者的关注,许多应用都使用到了百度地图API服务,包括博主me,我自己使用做的是Javascript API,根据经验,我想整理出一份系列教程,如果能 ...

  2. 深入浅出百度地图API开发系列(2):创建地图

    上一篇文章里,先介绍了一下百度地图API开发所涉及到的一些基础概念,包括投影,坐标系等基础概念,再有了这些基础后,我们可以开始开发自己的web地图了.先来个代码示例(建议大家都是用百度地图API大众版 ...

  3. 百度地图API开发指南

    简介什么是百度地图API? 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用.百度地图API包含了构建地图基本功能的各种接口,提供 ...

  4. 深入浅出百度地图API开发系列(3):模块化设计

    在前面两张简单介绍了百度地图API的基础知识和使用之后,我们来分析一下百度地图API的基本架构,了解一下基本架构可以帮助我们更清晰的了解API的功能和调用过程,也就可以帮助我们在实际开发中可以更方便的 ...

  5. 百度地图API开发一——仿照现有测距效果实现测面功能

      最近做了一个百度地图API的开发项目,里面有测量距离和测量面积的功能需求.测量距离百度给出了封装好的javascript包——BMapLib.DistanceTool,效果如下: 这个效果体验很好 ...

  6. android 基于百度地图api开发定位以及获取详细地址

    一:百度地图开发必须要到百度开发平台android开发api下载相应的库,已经申请百度地图开发key. 二:新建项目baidumaplocation.设计main.xml文件这里注意的是MapView ...

  7. 百度地图API开发

    1.首先申请百度地图秘钥 http://lbsyun.baidu.com/ 2.需要填一个申请的界面 3.申请后会有类似的东西 4.之后参照以下网址进行MFC编译 mfc webbrowser控件使用 ...

  8. 百度地图API开发的快速使用和大量坐标点操作【点聚合,海量点,mapv】

    快速上手 注意:本篇文章代码是基于 百度地图 JavaScript API v3.0 的条件下编写,GL版本可能稍有变化. 地图嘛,很重要的一部分就是坐标经纬度了: 经度: 英文 longitude ...

  9. 百度地图API开发----手机地图做导航功能

    第一种方式:手机网页点击打开直接进百度地图APP <a href="baidumap://map/direction?mode=[transit:公交,driving:驾车]& ...

随机推荐

  1. <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。

    原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名 ...

  2. Windows 下如何安装配置Snort视频教程

    Windows 下如何安装配置Snort视频教程: 第一步: http://www.tudou.com/programs/view/UUbIQCng360/ 第二部: http://www.tudou ...

  3. IOS 监听通讯录是否改变

    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); ABAddressBookRegist ...

  4. python学习之路-2 初识python数据类型

    数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2** ...

  5. CDN云主机与传统虚拟主机功能对比

    CDN云主机与传统虚拟主机功能对比 传统的虚拟主机都是单台服务器,一旦机器硬件损坏.IP被封.机房网络故障等,都将导致网站不能访问,严重的情况数据还无法及时取回,即使想换一家服务商也因为没有数据而无能 ...

  6. 8. 冒泡法排序和快速排序(基于openCV)

    一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分 ...

  7. Docker网络管理-外部访问容器

    注意:这里使用的方法是端口映射,需要说明的是端口映射是在容器启动的时候才能完成端口映射的. 1,搭建1个web服务器,让外部机器访问. docker run -itd centos /bin/bash ...

  8. 使用Fiddler捕获Java程序中的HTTP请求

      默认Java程序是不支持Fiddler获取请求的,因此需要通过设置代理来实现.   Fiddler的端口是8888,若Fiddler没有运行,则会抛出异常.   HttpClient4.5示例: ...

  9. javascirpt IP验证

    js IP 端口验证 function isPort(str) {     var parten=/^(\d)+$/g;     if(parten.test(str)&&parseI ...

  10. UITextView(文本视图) 学习之初体验

    UITextView文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.常见UITextView使用在APP的软件简介.内容详情显示.小说阅 ...