Geospatial library for the iPhone

2019-02-11 07:50发布

I'm thinking about creating a location-aware iPhone app that could work offline by coming packaged with a list of points of interest (POIs). The app would read the user's current location from CoreLocation and produce a list of the POIs in order of proximity to the user's current location.

I need two basic geospatial functions to get this application off the ground. The first is a function that tests if a point (the user's current location) lies within certain geospatial boundaries. The second is a function that can give me the distance between two lat/lon points. I would use the second function to sort the list of POIs by proximity to the user's current location.

I understand that this problem area is well traveled and there are open-source options. The leading candidate (that I know of) is the GEOS C++ library. The way I imagine I would use this is by compiling GEOS as a static library (and linking as a project dependency, as you do to include the three20 library.)

My question is:

  1. What is the best way to get the two necessary functions into my application.

  2. If the best answer to question 1 is compiling GEOS as a static library and linking it to my project, could anyone who has done this before offer some pointers? I'm a novice at compilation, static library building, etc. I would love to see some example code or tutorials on how to get GEOS compiled and included in a project with a trivial example usage.

2条回答
相关推荐>>
2楼-- · 2019-02-11 08:16

For distance between points, see CLLocation's getDistanceFrom: method.

I'm not sure what you mean by geospatial boundaries, but if you mean you have a rectangle defining a location, you can convert it to a CGRect, offset the latitude and longitude of all of your points by 90 and 180 respectively to make sure you don't have negative numbers, convert your CLLocation objects to CGPoints, then use CGRectContainsPoint to figure out if your location is within that rectangle.

All of the described functions are part of the standard iPhone SDK.

查看更多
啃猪蹄的小仙女
3楼-- · 2019-02-11 08:19

Ok, it took me some time but now I think that I'm properly able to build the static libs or GEOS for iPhone (x86 and ARM for both the simulator and the real device) : libgeos.a and libgeos_c.a : the implementation and its api.

You can get the binaires there (for GEOS version 3.1.1, this is not the very last one) : http://bit.ly/aTKsI6

(there are some other binaries there, the rest is for spatialite)

The job has been mostly achieved by understanding the way cross compilation is done via .sh scripts. This blog is a must see for that : http://robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884

查看更多
登录 后发表回答