2011-05-23 6 views
5

La aplicación Realtor para iPad ha hecho un muy buen trabajo al implementar una herramienta de dibujo personalizada sobre el mapa de mapas que utilizan para consultar un área para hogares. Estoy familiarizado con Mapkit y sus clases asociadas, pero no estoy al tanto de cómo podría hacer un dibujo personalizado con mi dedo y hacer que se traduzca en una consulta geoespacial. ¿Cómo hacerlo?¿Cómo puedo implementar la herramienta de búsqueda de dibujos personalizada que se usa en la aplicación Realtor iPad?

+0

¿Alguna vez encontrar la manera de hacer esto como que estoy teniendo el mismo problema? – Exist

+0

Nunca lo hice, ojalá pudiera. – kyleplattner

Respuesta

1

No estoy seguro de qué tan avanzado usted lo ha hecho con esto, pero el algoritmo básico debería tener este aspecto:

  • dibujar un polígono overtop su mapa, y luego convertir las coordenadas de ese polígono para "mapear" las coordenadas. Para hacerlo, probablemente necesite escuchar gestos en una vista que no sea la instancia de MKMapKit. Con mi conocimiento limitado del manejo de eventos táctiles de MapKit, es posible que tenga que superponer una vista transparente diferente en el mapa cuando quiera dibujar, para que los eventos táctiles no se transmitan a MapKit (si eso tiene sentido). Usas tu dedo para pellizcar, hacer zoom, mover y no querrás esa funcionalidad si estás tratando de dibujar. En esa vista, dibujará la forma que rastrea el dedo del usuario y luego trasladará los puntos dibujados a los puntos del mapa.

    Los documentos indican que puede traducir puntos de pantalla a puntos de mapa utilizando el método convertPoint:toCoordinateFromView: en MKMapView.

    Comprobar este enlace para obtener información sobre lo siguiente: Trouble converting MapKit user coordinates to screen coordinates

    Este puesto proporciona un enlace que pueden ayudar con el dibujo del polígono: To draw polygon on google map with MapKit framework

  • Después de que ha dibujado el polígono querrá "espacialmente" consultar sus datos. Podrías hacer eso de varias maneras. Localmente en el dispositivo o a través de un servicio web son dos opciones. Si sus datos son locales para el dispositivo, tendrá que hacer los cálculos cartográficos en su dispositivo. También deberá asegurarse de que los datos de sus puntos (las X, Y) estén en la misma proyección y espacio de coordenadas que la información de su polígono. La matemática de intersección de polígonos es relativamente fácil de hacer, cuando sus proyecciones y sistemas de coordenadas se alinean.

    Aquí hay un enlace que puede ayudarte con las matemáticas.

    https://math.stackexchange.com/questions/237/how-do-you-determine-if-a-point-sits-inside-a-polygon

    Si lo prefiere puede establecer algún servicio web que toma sus datos de polígono y realiza las mismas matemáticas cartográfica en un servidor y devuelve los resultados al dispositivo. De cualquier manera, es necesario realizar las mismas operaciones matemáticas. Tomará los datos de ese polígono y determinará qué registros de sus datos se cruzan con ese polígono.

Esto es bastante alto nivel, lo sé, pero debería ser todo lo que necesita hacer.

Otra consideración es si sus datos están habilitados espacialmente con spatialite compilado para SQLite en su dispositivo o SQL Server Spatial en su servidor. Debería poder consultar los datos usando esos datos de polígono. Sin embargo, debería formatear la consulta correctamente.

Por último, le sugiero que consulte el ESRI SDK para iOS. ESRI proporciona herramientas de dibujo y dibujo de la caja.No es demasiado difícil de usar pero una desventaja es que usted tendría que aprender un nuevo API:

http://resources.arcgis.com/en/communities/runtime-ios-sdk/

Cuestiones relacionadas