Pregunta

Estoy pensando en la creación de una aplicación para el iPhone que reconoce la ubicación que podrían trabajar sin conexión al venir empaquetado con una lista de puntos de interés (POI). La aplicación se leería la ubicación actual del usuario CoreLocation y producir una lista de los puntos de interés en orden de proximidad a la ubicación actual del usuario.

necesito dos funciones geoespaciales básicos para obtener esta aplicación fuera de la tierra. La primera es una función que las pruebas si un punto (ubicación actual del usuario) se encuentra dentro de ciertos límites geoespaciales. La segunda es una función que me puede dar la distancia entre dos puntos de Lat / Lon. Me gustaría utilizar la segunda función para ordenar la lista de puntos de interés por la proximidad a la ubicación actual del usuario.

Yo entiendo que esta problemática ha viajado mucho y hay opciones de código abierto. El principal candidato (que yo sepa) es la GEOS biblioteca de C ++. La forma en que me imagino que yo usaría esto es mediante la compilación de GEOS como una biblioteca estática (y la vinculación como una dependencia del proyecto, como lo hace para incluir el Three20 biblioteca.)

Mi pregunta es:

  1. ¿Cuál es la mejor manera de obtener las dos funciones necesarias en mi aplicación.

  2. Si la mejor respuesta a la pregunta 1 está recopilando GEOS como una biblioteca estática y su vinculación con mi proyecto, podría cualquiera que haya hecho esto antes de oferta de algunos indicadores? Soy un principiante en la compilación, edificio de la biblioteca estática, etc. Me gustaría ver un código de ejemplo o tutoriales acerca de cómo lograr GEOS recopilados e incluidos en un proyecto con un ejemplo de uso trivial.

¿Fue útil?

Solución

Para distancia entre los puntos, véase el método CLLocation de getDistanceFrom:.

No estoy seguro de lo que entendemos por límites geoespaciales, pero si significa que tenga un rectángulo que define una ubicación, puede convertirlo en un CGRect, compensado la latitud y longitud de todos sus puntos por 90 y 180, respectivamente para asegurarse de que no tienen números negativos, convertir sus objetos CLLocation a CGPoints, a continuación, utilizar CGRectContainsPoint de averiguar si su ubicación es dentro de ese rectángulo.

Todas las funciones descritas forman parte del estándar de iPhone SDK.

Otros consejos

Ok, me tomó algún tiempo, pero ahora creo que soy capaz de construir adecuadamente las librerías estáticas o GEOS para iPhone (x86 y ARM, tanto para el simulador y el dispositivo real): libgeos.a y libgeos_c.a: la implementación y su API.

Usted puede obtener los binaires allí (GEOS para la versión 3.1.1, este no es el último uno): http://bit.ly/aTKsI6

(hay algunos otros binarios allí, el resto es para SpatiaLite)

El trabajo se ha logrado sobre todo mediante la comprensión de la forma en la compilación cruzada se realiza a través de scripts .sh. Este blog es una visita obligada para los que: http: / /robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top