如何实现Realtor iPad应用程序中使用的自定义绘图搜索工具?

时间:2011-05-23 23:13:43

标签: ios iphone ipad mkmapview mapkit

Realtor iPad应用程序在mapkit之上实现了一个自定义绘图工具,用于查询家庭区域。我熟悉mapkit及其相关的类,但我不知道如何用手指做一些自定义绘图并将其转换为地理空间查询。怎么做?

1 个答案:

答案 0 :(得分:1)

我不确定你用它做了多远,但你的基本算法应该是这样的:

  • 在地图上方绘制一个多边形,然后将该多边形的坐标转换为“地图”坐标。为了做到这一点,你可能需要在MKMapKit实例以外的视图上监听手势。由于我对MapKit触摸事件处理的了解有限,您可能需要在绘制时在地图上覆盖不同的透明视图,因此触摸事件不会通过MapKit(如果这有意义)。您可以用手指捏,缩放,平移,如果您正在尝试绘制,则不需要该功能。在该视图中,您将绘制描绘用户手指的形状,然后将绘制的点转换为地图点。

    文档表明您可以使用MKMapView上的convertPoint:toCoordinateFromView:方法将屏幕点转换为地图点。

    点击此链接可获取相关信息:Trouble converting MapKit user coordinates to screen coordinates

    这篇文章提供的链接可以帮助您绘制多边形: To draw polygon on google map with MapKit framework

  • 绘制多边形后,您需要“空间”查询数据。你可以用几种方式做到这一点。设备本地或通过Web服务有两种选择。如果您的数据是设备的本地数据,则必须在设备上进行制图数学运算。您还需要确保您的点数据(X,Y)与多边形的信息位于相同的投影和坐标空间中。当你的投影和坐标系排成一行时,多边形交叉数学是相对简单的。

    这是一个可以帮助您计算数学的链接。

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

    或者,您可以设置一些Web服务,该服务接收多边形数据并在服务器上执行相同的制图数学运算并将结果返回给设备。无论哪种方式,都需要执行相同的数学运算。您将获取该多边形数据并确定数据中的哪些记录与该多边形相交。

这是非常高级的,我知道,但它应该是你需要做的全部。

另一个考虑因素是,如果您的数据在空间上启用了为您的设备上的SQLite或服务器上的SQL Server Spatial编译的spaceite。您应该能够使用该多边形数据查询数据。但是,您必须正确格式化查询。

最后,我建议您查看适用于iOS的ESRI SDK。 ESRI提供开箱即用的绘图和草图绘制工具。它不是很难使用,但一个缺点是你必须学习一个新的API:

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