如何在 c++ 语言中使用带有 MFC 或 QT 的谷歌地图 API?

How to use google map API with MFC or QT in c++ language?

本文关键字:QT MFC 谷歌地图 API c++ 语言      更新时间:2023-10-16

我有一个问题,如何在我的开发程序中使用谷歌地图api。

我的程序是通过Visual Studio 2017环境中的c ++语言和通常用于图形界面的MFC实现的。

我想使用谷歌地图api开发两个版本的程序。 第一个是在我的程序中使用谷歌地图,而无需互联网连接。 第二个是互联网连接。

如果有人知道该怎么做,请回答我的问题。

Qt C++提供了一个QWebChannel,填补了C++应用程序和HTML/JavaScript应用程序之间的空白。

您需要创建一个 QWebChannel 并在 C++ 中注册一个 JavaScript 帮助程序对象。此对象公开公共方法,这些方法可从 HTML 中的 JavaScript 调用。

QWebEngineView::setUrl() 托管一个页面,其中包含 Google 地图。 QWebEnginePage::runJavaScript() 为您提供了操作地图的能力。C++调用JS,JS调用C++ ---这真的很强大!

我面临着和你一样的需求。我找到的解决方案是使用嵌入式浏览组件,并从该组件访问Google地图。 请参阅我关于此实现的文章。 基本上,下面是将此类组件添加到 MFC 应用程序的说明:

  1. 打开视觉C++并按照以下步骤操作:
  2. 从"文件"菜单中选择"新建"。
  3. 选择"MFC 应用程序向导 (exe)"。
  4. 输入项目名称并选择位置。
  5. 单击"确定"。当出现步骤 1 的对话框时,选择适合您的应用程序的应用程序类型 - 单个文档、多个文档或基于对话框的应用程序类型。在本例中选择"基于对话框"。
  6. 单击下一步。 选择应用程序功能和支持。 步骤 2 的对话框要求您选择应用程序所需的任何功能和支持,例如"关于"框或自动化支持。Web 浏览器控件是 ActiveX 控件,因此请选择 ActiveX 控件。单击"下一步"转到下一步。
  7. 选择项目样式。 步骤 3 的对话框用于定义项目。您只有一个项目样式选项,即标准 MFC。但是,您可以指示是否希望 IDE 在源代码中生成注释,并且可以指定如何使用 MFC 库。默认选择适用于大多数应用程序。单击"下一步"转到下一步。命名文件和类。步骤 4 的对话框显示 Visual C++创建的所有文件和类的名称。您可以将这些名称更改为更具描述性的名称或规范所需的名称。单击完成。

  8. 添加 Web 浏览器控件。

与谷歌地图交互的实际部分嵌入在HTML代码中,该代码也应该被托管,因此我的解决方案将浏览器的托管与Google地图的界面相结合。

在此示例中,HTML 代码的格式:

HTML_TEXT.Format(L"<!DOCTYPE html><html><meta http-equiv="IE X-UA-Compatible" content="IE = edge"><body><div id ="googleMap" style="width:%dpx;height:%dpx"><script>function myMap(){var mapProp = {center:new google.maps.LatLng(%f, %f), zoom : 10};var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);marker = new google.maps.Marker({position: new google.maps.LatLng(%f, %f),map: map});}</script><script src = "https://maps.googleapis.com/maps/api/js?key=%s&callback=myMap"></script></div></body></html>", w, h, Latitude, Longitude, Latitude, Longitude, API_KEY);

如您所见,您可以使用经度纬度生成带有指向给定位置的标记的地图。您还需要从谷歌获取API_KEY。