Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone MapKit:来自Sqlite数据库的坐标_Iphone_Ios_Sqlite_Mapkit - Fatal编程技术网

Iphone MapKit:来自Sqlite数据库的坐标

Iphone MapKit:来自Sqlite数据库的坐标,iphone,ios,sqlite,mapkit,Iphone,Ios,Sqlite,Mapkit,我有一个sqlite数据库,大约有100000行包含ATM的经度和纬度。我想在MKMapView上通过PIN显示此ATM。但我认为,如果一次从DB加载所有坐标,对内存和速度都不好。最好的方法是什么?你完全正确,不要一次全部加载 使用边界框仅获取要显示的地图内的坐标。查看此问题的答案: 对lat和lng使用相同的上限和下限概念,以便仅从sqlite返回当前可见的行。您的查询看起来像 SELECT * FROM atms WHERE lat > 51.4 and lat < 51.6 a

我有一个sqlite数据库,大约有100000行包含ATM的经度和纬度。我想在MKMapView上通过PIN显示此ATM。但我认为,如果一次从DB加载所有坐标,对内存和速度都不好。最好的方法是什么?

你完全正确,不要一次全部加载

使用边界框仅获取要显示的地图内的坐标。查看此问题的答案:

对lat和lng使用相同的上限和下限概念,以便仅从sqlite返回当前可见的行。您的查询看起来像

SELECT * FROM atms WHERE lat > 51.4 and lat < 51.6 and lng > -0.165 and lng < -0.175
从lat>51.4、lat<51.6、lng>-0.165和lng<-0.175的自动取款机中选择*

此查询仅返回靠近伦敦市中心(51.5,-0.17)的ATM。

您完全正确,不要同时加载所有ATM

使用边界框仅获取要显示的地图内的坐标。查看此问题的答案:

对lat和lng使用相同的上限和下限概念,以便仅从sqlite返回当前可见的行。您的查询看起来像

SELECT * FROM atms WHERE lat > 51.4 and lat < 51.6 and lng > -0.165 and lng < -0.175
从lat>51.4、lat<51.6、lng>-0.165和lng<-0.175的自动取款机中选择*

此查询仅返回伦敦市中心附近的自动取款机(51.5,-0.17)。

thx。但若每次当用户在MKMapView中拖动时,我都会对sqlite执行新的查询,那个么它就不会这么快了。我说得对吗?你可以等到地图拖了一段距离再看吗?或者等到用户完成拖动后再运行新的查询?但我想毫不拖延地执行此操作。马上。它是可实现的吗?使你的边界框大于地图-这意味着,如果他们拖动一点,仍然会有标记滚动到视图中。在这种情况下,您将在后台运行下一个查询以获取更多标记。但你不可能拥有你想要的一切——它要么速度快要么占用更少的内存。您必须选择哪个.thx。但若每次当用户在MKMapView中拖动时,我都会对sqlite执行新的查询,那个么它就不会这么快了。我说得对吗?你可以等到地图拖了一段距离再看吗?或者等到用户完成拖动后再运行新的查询?但我想毫不拖延地执行此操作。马上。它是可实现的吗?使你的边界框大于地图-这意味着,如果他们拖动一点,仍然会有标记滚动到视图中。在这种情况下,您将在后台运行下一个查询以获取更多标记。但你不可能拥有你想要的一切——它要么速度快要么占用更少的内存。你必须选择哪一个。