基本上,我有一个POI的列表(名称、lat、long),我想在UIView上绘制它们,相对于我当前的lat/long。我正在寻找一些将这些POI (lat/long)映射到UIView的最佳实践。
I不想使用MKMapView (不需要显示地图数据)。
我读到:
http://developer.apple.com/library/ios/#documentation/general/conceptual/Devpedia-CocoaApp/CoordinateSystem.html
但我不知道如何从CLLocation到UIView上的(x,y)。我只想画出我现在的位置。因此,例如,如果我的屏幕表示一个20×30公里的区域,我如何将我的POI映射到它们相应的(x,y)坐标?
谢谢。
发布于 2012-12-15 15:40:37
您正在做的事情有点奇怪,但是您可以将纬度/经度转换为一个名为CGPoint
-like结构的MKMapPoint
。MKMapPoint
有一个x
和y
值,它们对应于地图上的点。想象一下,如果你绘制了一张平面的世界地图,0,0是左上角。MKMapPoint
是地图上使用那个坐标系的一个点。
使用函数MKMapPointForCoordinate()
将CLLocationCoordinate2D
转换为MKMapPoint
MKMapPoint myMapPoint = MKMapPointForCoordinate(myLocationCoordinate);
当你得到点的列表时,你必须做一些事情,比如找到最大值、最小值x和y值,然后使用这些值将所有的点拟合到你的视图中,否则你的视图中会有大量非常接近的点。
发布于 2012-12-15 13:58:55
我的猜测是,对于一个20公里×30公里的区域,你可以认为地球是平的,因此可以线性地外推坐标。我相信你可以在谷歌上找出距离在0.00001度和经度上有多大的差异。
所以如果你在X轴上有20公里,你现在的位置是纬度30.1234567,0.0000001是1公里,你可以把你的坐标放在屏幕的中心,30.1234557作为最左边的X坐标等等。
我不是想在这里给出答案,只是想大声想想,因为我也想做一些类似的事情,作为一个基于互联网的应用程序(但没有显示),在两个坐标下,我必须找到它们之间的距离。
发布于 2012-12-15 14:25:01
有许多(许多)不同的方法来模拟行星和将三维坐标转换到2D表面,各种方法带来的误差取决于地球的不同部分。不过,这个问题似乎涵盖了你所追求的大部分内容:
https://stackoverflow.com/questions/13891814
复制相似问题