适用于iPhone的地理空间库

时间:2009-11-23 11:43:55

标签: iphone static-libraries geospatial

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

我需要两个基本的地理空间功能才能让这个应用程序开始运行。第一个是测试点(用户的当前位置)是否位于某些地理空间边界内的函数。第二个函数可以给出两个纬度/经度点之间的距离。我会使用第二个函数按邻近用户的当前位置对POI列表进行排序。

据我所知,这个问题区域已经走得很远,并且有开源选项。领先的候选人(我所知道的)是GEOS C ++库。我想我将使用它的方法是将GEOS编译为静态库(并链接为项目依赖项,就像包含three20库一样。)

我的问题是:

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

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

2 个答案:

答案 0 :(得分:3)

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

你可以在那里买到binaires(对于GEOS 3.1.1版本,这不是最后一个): http://bit.ly/aTKsI6

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

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

答案 1 :(得分:1)

对于点之间的距离,请参阅CLLocation的{​​{1}}方法。

我不确定你的地理空间边界是什么意思,但如果你的意思是你有一个定义位置的矩形,你可以将它转换为getDistanceFrom:,从而抵消所有点的纬度和经度。分别为90和180以确保您没有负数,将CGRect对象转换为CLLocation s,然后使用CGPoint确定您的位置是否在该矩形内。

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