




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届北京市首师大附中化学高二第一学期期末达标检测模拟试题含答案
- 口腔编内考试题库及答案
- 职称的考试题库及答案
- 常见输液反应课件
- 常见修辞手法课件
- 2026届贵州省铜仁市思南县思南中学高二化学第一学期期中预测试题含解析
- 帮厨课件内容
- 带教课件标题
- 2025-2026学年PEP英语六年级上册期末综合卷(含答案含听力原文无听力音频)
- 安徽定远育才实验学校2026届化学高二第一学期期末综合测试模拟试题含答案
- 水稻植保无人机服务协议
- 读后续写体育竞技个人成长课件高三英语二轮复习
- 箱式变电站技术规范书
- 有轨电车交通工程设施设计规范
- 施工安全村民告知书
- 快速入门穿越机-让你迅速懂穿越机
- 广州南方学院(原中山大学南方学院)学校办公室新闻宣传中心新闻管理岗招聘公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 儿童呼吸机基本使用
- 起重机械安全日管控、周排查、月调度制度
- 派出所民警心理健康辅导
- 民事诉讼法课件
评论
0/150
提交评论