Kev*_*ott 0 iphone mapping core-data mkcoordinateregion android-mapview
使用iPhone 3.0 SDK中的MapKit,可以创建符合MKAnnotation协议的对象.将这些加载到MKMapView非常简单.但是,当用户滚动MKMapView时,是时候加载新的注释了.请求新对象的可能位置是mapView:regionDidChangeAnimated:在更改地图区域时调用,然后使用新注释添加/替换注释.
具体来说,我想查询Core Data以检索当前MKCoordinateRegion(mapView.region)中存在的所有对象,以便我只加载将在屏幕上显示的对象.Core Data中的对象具有纬度和经度属性(CLLocation属性在类'.m/.h中定义,我可以从中手动填充)并将其用于NSPredicate以查找附近的对象.
由于Core Data数据库中存在多少个对象的性质,我们不能将所有对象预加载为注释,否则我们将耗尽内存(并且它会非常慢).
如何仅检索当前mapview边界中具有位置的对象?
对不起英语不是我的第一语言..
一旦用户向下或向上滚动..区域值将改变,特别是来自regionDidChangeAnimated的 latitudeDelta和longitudeDelta .从那里,你可以获得当前mapView的界限..(minlat,minlong,maxlat,maxlong)
minlat = current_coordinate_lat - latitudeDelta; //note everything is in dd (decimal degrees)
maxlat = current_coordinate_lat + latitudeDelta;
minlong = ...
maxlong = ...
Run Code Online (Sandbox Code Playgroud)
由于您已经具有计算边界,因此您可以处理需要显示的对象,然后在地图中添加注释.我已经尝试了下面的值..
看这里的图片.. http://img43.imageshack.us/img43/703/picture1txe.png
从那里..我可以做sqlite3 sql语句来获取该范围内的点..
SELECT * FROM pois WHERE categ_id = %@ AND (sat_latitude > %f AND sat_latitude < %f) AND (sat_longitude > %f AND sat_longitude < %f)
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |