




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最近需要实验室需要将在无人机地面站中嵌入地图,在网上找了很多资料,终于有些眉目了,首先,做这个需要用到的知识有,MFC控件、MFC类库、JavaScript脚本语言,Google API、Google离线地图;由于google离线地图不怎么会,首先从google在线地图开始。下面总结一下这几天搞google地图的步骤,在线Google 地图步骤:(1)、建立基于对话框的MFC工程。由于我对MFC基本不了解,所以从网上下载了个例子,但是不知道例子中那一部分是涉及google地图的部分,这个时候我只能一步步的从新建工程开始,建立了一个基于对话框的MFC工程,工程中自动生成了3个类,他们是(1)class CThird_ProjApp : public CWinApp(2) class CForth_ProjDlg : public CDialogEx,(3) class CAboutDlg : public CDialogEx 此3个类中我只需要了解CForth_ProjDlg就可以了,因为我们接下来的操作对象是CForth_ProjDlg。(2)、向工程中添加web browser控件,方法如下:工具-选择工具箱项-COM组件,microsoft browser前面的复选框勾选上。(添加其他的active X控件也是同样的方法),然后在界面中添加控件。调整web browser控件的大小使之能显示我们需要的google地图。如图所示,(3)、为web browser控件添加变量m_map。这样在工程中就多了两个文件,其中包含class CExplorer1 : public CWnd类及其实现。在CForth_ProjDlg类中多了一个 CExplorer1类型的 变量m_map。(4)在对话框界面中添加几个按钮控件和文本框。同时添加处理函数。对应的文本框要添加value型的变量m_lat,m_long,m_Zoom_Level(5)在打开地图的处理函数中加入程序。例如:void CForth_ProjDlg:OnBnClickedButton1_OpenMap()m_map.Navigate(_T(E:/test/google.html),NULL,NULL,NULL,NULL);其中E:/test/google.html是javascript语言写的脚本。到此位置,最基本的功能已经实现了,如果需要与google地图交互,请继续往下看。脚本如下所示: Google 地图 JavaScript API 示例: 地图标记 function initialize() if (GBrowserIsCompatible() var map = new GMap2(document.getElementById(map_canvas); map.setCenter(new GLatLng(23.1650922, 113.4752355), 4); /map.addControl(new GLargeMapControl();/大的缩放条 map.addControl(new GSmallMapControl();/小的缩放条 map.addControl(new GMapTypeControl(true); / map.addControl(new GMapTypeControl(); / 在随机位置向地图中添加 10 个标记 var bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var lngSpan = northEast.lng() - southWest.lng(); var latSpan = northEast.lat() - southWest.lat(); for (var i = 0; i 1; i+) var point = new GLatLng(23.1650922, 113.4752355); map.addOverlay(new GMarker(point); (6)更改中心位置需要涉及到从MFC中向JS脚本文件中的函数传递参数的问题了,下面开始讲解这一部分。此处介绍一种通过CWebPage类来解决此问题的方法:(a)、从网上下载CWebPage.h和CWebPage.cpp。将其加入工程中。(b)、在对话框或者视图的实现文件中,加入#include WebPage.h,在按钮的响应函数中就可以调用javascript函数了,具体代码如下:CWebPage web;web.SetDocument(m_map.get_Document();CComVariant varResult;/返回值const CString funcName(TansTo);/js中的函数名称const CString m_latitude(23.1650922);/传递的参数:纬度const CString m_longtitude(113.4752355);/经度const CString m_lev(4);/缩放等级web.CallJScript(funcName,m_latitude,m_longtitude,m_lev);(c)在js文件中编写TansTo函数;(d)通过界面设置缩放级别。添加一个文本框,给文本框添加一个value型变量。在更新缩放控件的处理函数中写入一下程序:到此为止,我们在线的google地图已经做好了,在此过成中,遇到了几个问题:第一、从网上下载CWebPage.h和CWebPage.cpp在我的vs2010中打开有错误,说什么+号重载的不对。第二、向js脚本中传递缩放等级的时候一直报错,这个问题困扰了一上午,最后我将变量做加法运算,发现结果是字符串运算的结果,所以在js中处理缩放等级的时候用了一个perseInt函数转换格式,为什么纬度和经度的不需要格式转换而缩放等级需要呢?这个我搞不明白,欢迎指教!接下来我想记录一下google API的相关知识:这个我下载了个word版本的,其他网页版本的有:/content/11/0201/23/2475285_90383000.shtml离线Google 地图步骤:为了实现能在没有网络的情况下操作地图,需要Google地图离线化,离线地图我在网上找了很多资料,但是大部分资料是不适合使用的,不适合的原因主要是js脚本和离线瓦片地图的路径格式不对,找了很多不适合用的资料,最后当我在搜索google地图api的某个函数的时候,搜到了一哥们的博客,博客中有js脚本,有怎么样下载瓦片地图,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共同买房协议书有效
- 《知识 声音的强弱》(教学设计)-人教版(2012)音乐一年级上册
- 工伤补偿协议书模板
- 合伙投资协议书范本
- 报关单合同协议书号
- 本章复习与测试教学设计初中地理中图版七年级下册-中图版2012
- 2024-2025学年新教材高中英语 Unit 6 Space and beyond泛读 技能初养成(教用文档)说课稿 外研版选择性必修第四册
- 合同违约协议书
- 宅基地转让无效协议书
- 2024-2025学年新教材高中物理 第八章 机械能守恒定律 5 实验:验证机械能守恒定律(2)说课稿 新人教版必修2
- 《环氧树脂应用》课件
- 中职第1课 社会主义在中国的确立和探索试题
- 2025年辽宁省交投集团招聘笔试参考题库含答案解析
- 2024年版高尔夫球场场地租赁及会员服务协议3篇
- 香港 信托合同范本
- 2024年大学试题(政治学)-比较政治制度考试近5年真题集锦(频考类试题)带答案
- 建筑物拆除场地清理垃圾外运施工方案
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 断亲协议书模板
- 中秋国庆假期安全教育
- GB/T 19808-2005塑料管材和管件公称外径大于或等于90mm的聚乙烯电熔组件的拉伸剥离试验
评论
0/150
提交评论