1

我正在考虑创建一个位置感知的 iPhone 应用程序,该应用程序可以通过与兴趣点 (POI) 列表打包来离线工作。该应用程序将从中读取用户的当前位置,CoreLocation并按照与用户当前位置接近的顺序生成 POI 列表。

我需要两个基本的地理空间功能来启动这个应用程序。第一个是测试点(用户当前位置)是否位于特定地理空间边界内的函数。第二个是一个函数,可以给我两个纬度/经度点之间的距离。我将使用第二个函数按与用户当前位置的接近程度对 POI 列表进行排序。

我知道这个问题领域很流行,并且有开源选项。领先的候选者(据我所知)是GEOS C++ 库。我想我会使用它的方式是将 GEOS 编译为静态库(并将链接作为项目依赖项,就像您包含three20库一样。)

我的问题是:

  1. 将这两个必要功能放入我的应用程序的最佳方法是什么。

  2. 如果问题 1 的最佳答案是将 GEOS 编译为静态库并将其链接到我的项目,那么之前做过此操作的任何人都可以提供一些指示吗?我是编译、静态库构建等方面的新手。我希望看到一些示例代码或教程,了解如何通过简单的示例用法编译 GEOS 并将其包含在项目中。

4

2 回答 2

3

好的,我花了一些时间,但现在我认为我能够正确地为 iPhone 构建静态库或 GEOS(模拟器和真实设备的 x86 和 ARM):libgeos.alibgeos_c.a:实现及其 api。

你可以在那里获得双胞胎(对于 GEOS 版本 3.1.1,这不是最后一个): http ://bit.ly/aTKsI6

(那里还有一些其他的二进制文件,其余的都是用于空间的)

这项工作主要是通过了解通过.sh脚本完成交叉编译的方式来完成的。这个博客是必须看到的:http ://robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884

于 2010-03-25T11:03:24.723 回答
1

对于点之间的距离,请参阅CLLocation'sgetDistanceFrom:方法。

我不确定你所说的地理空间边界是什么意思,但如果你的意思是你有一个定义位置的矩形,你可以将它转换为 a CGRect,将所有点的纬度和经度分别偏移 90 和 180 以确保你没有负数,将您的CLLocation对象转换为CGPoints,然后用于CGRectContainsPoint确定您的位置是否在该矩形内。

所有描述的功能都是标准 iPhone SDK 的一部分。

于 2009-11-23T11:56:01.723 回答