7

我需要能够从非 Web 应用程序访问 Google Maps API。我在 Google 地图的常见问题解答中看到这是可能的。但是,我找不到任何关于从基于 PC 的应用程序访问 API 的参考。有人可以指出我正确的方向吗?

(如果有帮助,我想从 Delphi 应用程序访问 API。)

提前致谢。

4

3 回答 3

15

前段时间我写了一系列关于使用 Delphi 的 Google maps API v3 的文章,基本上你需要一个TWebBrowser组件并使用 JavaScript 代码加载一个 HTML 页面来处理Google Maps JavaScript API v3. 从这里使用IHTMLWindow2.execScriptMSHTML 接口等函数,您可以与来自 Delphi 的 JavaScript 代码和 Google Maps API 响应进行交互。

也看看这些项目

于 2012-06-01T03:57:16.583 回答
5

如果您正在寻找在 Delphi 中使用 Google Maps API 的完整解决方案,我强烈推荐Delphi Framework for Google Maps。它无需一行HTMLJavaScript即可使用所有API 函数。

例如:

procedure TForm1.FormShow(Sender: TObject);
begin
  with Script(WebBrowser1) do
    if not APILoaded
      then LoadAPIAsync(InitMap);
end;

procedure TForm1.InitMap(Sender: TObject);
var
  MapOptions: TMapOptions;
begin
  with Sender as TScript do
  begin
    MapOptions:=New(Google.Maps.MapOptions);
    with MapOptions do
    begin
      Zoom:=8;
      Center:=New(Google.Maps.LatLng(-34.397,150.644));
      MapTypeID:=Google.Maps.MapTypeID.Roadmap;
    end;
    New(Google.Maps.Map(MapOptions));
  end;
end;

路线规划器也很容易获得。有一些演示。

不幸的是,您目前仍必须从德国论坛下载它。一个单独的网站正在建设中。如果注册或下载有问题,我可以发送一封包含框架的电子邮件。

问候

于 2012-06-08T09:12:34.693 回答
5

如果您在这方面有认真的计划:
忘掉 Google Maps API,改用OpenLayers

相信我,我有这方面的实践经验。我创建了无数交互式地图网站和应用程序,并且我编写了将 Google 地图功能包装到 Delphi 组件中的代码。您可以在 Google 代码上找到它们:http ://code.google.com/p/delphimaps/

您还可以在此处找到我使用这些组件的早期版本制作的一些示例应用程序:使用我的 Delphi 应用程序中的 Googlemap?

OpenLayers 更加通用,它是完全开源的,并且它背后有一个完整的社区。它甚至可以使用 Google Maps,但您可以轻松切换到 OpenStreetMaps、Yahoo、Bing 或您自己的 GIS 系统。

网上有很多例子,你不受谷歌强加的愚蠢规则的束缚。例如,如果您想通过安全 (HTTPS) 连接使用 Google 地图,则必须付费。我再也没有直接使用 Google Maps API,而且自从我开始使用 OpenLayers 以来,我的 GIS 网站变得更好了。

也许有一天我应该将 OpenLayers 包装到 Delphi 组件中,但我现在用 JavaScript 做大部分事情,并且只在真正需要时与我的 Delphi 应用程序通信,所以即使使用包含地图的 Delphi 应用程序,也没有太多的 GIS 工作在德尔福。事实证明,这更容易维护。

..

此外,OpenLayers 不需要任何互联网连接。它可以在您的离线浏览器中 100% 运行。谷歌地图要求你有互联网连接,因为它会动态下载部分代码,并且总是想从谷歌下载地图。

于 2012-06-01T07:52:12.087 回答