代码之家  ›  专栏  ›  技术社区  ›  foraidt

MFC应用程序的映射插件

  •  2
  • foraidt  · 技术社区  · 15 年前

    我想在MFC应用程序中显示一个地图(Visual Studio 2008,带MFC功能包)。 我有以下要求:

    • 我必须能够添加我自己的标记(普通的lat/lon位置),最好使用不同的颜色/图标,这样才能区分不同类型的标记。
    • 如果地图数据是从在线来源获取的,它必须是可缓存的,也就是说,我可以在某个(或多个)缩放级别预先加载一个区域的地图,然后切换到“脱机模式”。或者,所有地图数据都与应用程序一起安装。
    • 用户可以进行放大/缩小和平移等标准操作。
    • 用户必须能够选择我的标记,最好是在它们周围拖动一个矩形。
    • 由于整个应用程序都是用C++编写的,所以我不想为这个插件使用.NET运行时。
    • 这不应该花很多钱。

    我目前正在使用一个名为“esri mapobjects lt2”的ActiveX插件,它可以以某种方式完成所有这些工作,但实现起来非常繁琐,开发似乎在Visual Studio 6可用时停止了,地图材料要么非常基本,要么非常昂贵。

    我曾想过使用谷歌地图或谷歌地球,但我认为它们并不真正支持非网络应用程序的使用。 我发现 ArcView 作为我目前使用的插件的继承者,但我不认为我属于目标用户,因为它提供的功能远远超过了我所需要的。我也没有找到任何关于定价的信息。

    3 回复  |  直到 15 年前
        1
  •  1
  •   KPexEA    15 年前

    我已经编写了一个开源的地理应用程序(它是C++)来渲染地图,源代码是:
    http://code.google.com/p/gpsturbo/

    它使用我自己的自定义渲染,但如果需要的话,可以去掉映射解析。它使用google tiles(和缓存tiles以供离线使用)以及garmin格式的GPS地图来渲染地图,还有一个openstreetmap格式的渲染器。

        2
  •  1
  •   Kieveli    15 年前

    如果你有互联网接入,重新考虑谷歌。您可以使IE浏览器的实例显示在应用程序的框架中。我相信你可以使用ActiveX控件。此外,谷歌地球还有一种方法可以将自己嵌入到网页中,也可能嵌入到应用程序中。

    另一个选择是 Global Mapper 这比谷歌地图和谷歌地球还差。

    由于缺乏性能和支持,我们在放弃ESRI之前使用了很长时间。花1万美元买一个许可证,然后被告知他们还需要2千美元,这样我们才能真正使用它,真是太痛苦了。哦,然后再多花2千美元来增加一些额外的功能。即使不起作用,他们的支持也因缺乏光泽而黯然失色。

        3
  •  1
  •   Igor Shubovych    15 年前

    如果你没有绑定到谷歌地图,你可以选择OpenStreetmap。

    有几个已知的应用程序用于呈现OSM映射:

    前两个直接渲染贴图,最后一个使用openstreetmap.org图块。

    您可以根据需要缓存任意数量的图块或数据,但不限于这样做。