Tag: geolocation

位置跟踪器pt。 1:Swift中的离线优先设计

Location Tracker应用程序的目标是向Swift开发人员展示使用Cloudant跟踪,存储和查询位置有多么简单,同时启用脱机优先设计并提供架构指导以扩展解决方案以支持数百万用户。 在本教程中,我们将向您展示如何构建应用程序以及为实现目标所采用的策略。 我们将向您展示如何将Cloudant Sync用于离线支持和数据同步。 我们将向您展示如何使用Cloudant Geo来执行和可视化地理空间查询。 最后,我们将介绍在以后的教程中将使用的替代体系结构和方法,以向您展示如何扩展应用程序以支持数百万用户。 总览 Location Tracker应用程序是在Swift中开发的iOS应用程序,可跟踪用户位置并将这些位置存储在Cloudant中。 当用户移动并记录新位置时,该应用会查询服务器以获取用户位置附近的兴趣点。 以下是“位置跟踪器”应用的屏幕截图。 蓝色图钉标记应用程序记录的每个位置。 在用户行进的路径上绘制了一条蓝线。 每当Location Tracker应用程序记录新位置时,都会在Cloudant中执行基于半径的地理查询,以查找附近的兴趣点(在应用程序中称为“地点”)。 半径由绿色圆圈表示。 位置显示为绿色图钉: 要求 为了帮助实现我们的目标,我们创建了5个关键要求: 跟踪前台和后台的位置:当应用程序在前台或后台运行时,该应用程序应该能够跟踪用户的位置。 使用地理空间查询来查找指定半径内的兴趣点:该应用程序应向用户展示如何使用Cloudant Geo执行地理空间查询。 脱机运行:该应用程序应能够在脱机时跟踪用户位置,并在网络连接可用时将这些位置同步到Cloudant。 将用户位置信息保密:用户不应有权访问其他用户的位置信息。 提供整合和分析所有位置的能力:后端工程师或数据科学家在不影响第4条要求的情况下,在所有位置执行分析应该很简单。 建筑 为了满足要求4(用户隐私),使用每个用户的数据库设计模式实现了位置跟踪器。 为只有该用户有权访问的每个用户创建一个专用数据库。 运作方式如下: 当用户注册时,Location Tracker应用程序会将用户信息发布到我们的Node.js服务器。 Node.js服务器在“用户”数据库中创建一个新用户。 Node.js服务器创建一个特定于用户的数据库来跟踪用户的位置。 Node.js服务器将数据库名称和身份验证信息返回到应用程序。 该应用程序直接连接到Cloudant以同步位置信息。 稍后我们将详细讨论。 这是系统架构的高级示意图: 除了创建相邻架构图中所示的特定于用户的数据库之外,服务器还为每个特定于用户的数据库配置连续复制到统一数据库( 所有位置 )中。 通过为我们提供一个位置来查询和分析所有用户记录的所有位置,同时又不损害用户安全性和隐私性(没有向用户提供直接访问统一数据库的权限),这满足了要求#5(位置合并和分析)。 注意: “每用户数据库”设计模式使您可以轻松地在iOS应用程序和Cloudant之间同步位置信息,同时确保信息保密。 对于中小型应用程序来说,这是一个很好的解决方案。 在下一个教程中,我们将向您展示复制用户隔离的数据的替代方法,以及如何扩展应用程序以支持数百万个用户。 服务器 Location Tracker Server是一个Node.js应用程序,它提供RESTful API,用于使用Cloudant Geo注册新用户和查询位置。 安装Location Tracker […]

如何使用Parsefind当前用户位置附近的用户?

我的应用程序需要find用户的当前位置,我已经完成了。 然后它需要find当前用户位置附近的其他用户。 我正在使用这个parsing。 到目前为止,这是我必须得到用户的当前位置,它的工作到目前为止。我不明白如何find当前用户的位置附近的其他用户。 有人可以帮我吗? 我真的很感激。 if ([PFUser currentUser] && [PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]) { [self updateUserInformation]; [PFGeoPoint geoPointForCurrentLocationInBackground:^(PFGeoPoint *geoPoint, NSError *error) { if (!error) { NSLog(@"User is currently at %f, %f", geoPoint.latitude, geoPoint.longitude); [[PFUser currentUser] setObject:geoPoint forKey:@"currentLocation"]; [[PFUser currentUser] saveInBackground]; } else { NSLog(@"%@", error); return; } }];

当用户退出区域时,删除已触发的基于位置的通知

我为我的应用程序设置了(默认iOS8)基于位置的通知。 UILocalNotification *notification = [[UILocalNotification alloc] init]; notification.regionTriggersOnce = NO; notification.userInfo = @{ @"notification_id" : @"someID" }; notification.region = region; notification.alertBody = alertBody; [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 当用户进入指定区域时, NotificationCenter正确显示在NotificationCenter 。 但是,我想在用户退出该区域时删除该通知消息,因为用户无法回家查看通知中心,直到他们收到如下所示的消息: “你在XXXXX!” 有没有人试过类似的东西? 文件不清楚如何做到这一点。

iOS从后台重新检查加载位置

我正在构build一个应用程序,根据您当前的位置显示结果数据。 目前,我使用UIViewController的viewDidLoad方法来启动CLLocationManager并获取当前位置。 一旦我的位置符合我所希望的准确性,我会向我的Web服务请求获取结果并将其转储到UITableView 。 我的问题是,当你closures应用程序(尽pipe它仍然在后台运行)。 如果您要开车到另一个城镇,请重新打开应用程序,数据不会更新,并继续显示旧位置的结果。 基本上,当UIViewController从后台加载,我需要能够检查用户的位置,如果他们已经移动了很长的距离,更新我的UITableView的内容。 但是,因为UIViewController的viewDidAppear没有被触发,当你从后台加载应用程序,我不知道我可以使用哪种方法。 我知道stopMonitoringSignificantLocationChanges方法,它会在find新的位置时唤醒您的应用程序。 不过,这似乎有点OTT,因为我只需要知道应用程序加载。 有没有其他select使用stopMonitoringSignificantLocationChanges方法?

地理定位不适用于iOS 8模拟器

我已经升级了cordova 3.5中的地理位置插件来解决iOS 8中的问题。 Cordova iOS and iOS 8 在iOS8模拟器中运行应用程序后,我得到通知“允许”MyApp“访问您的位置,而您使用的应用程序? 但它允许位置服务使用应用程序后仍然显示错误locationManager::didFailWithError (null)。 我试图closures模拟器并一次又一次地运行它。 此外,通过检查模拟器中的设置,似乎位置服务处于活动状态( “设置”>“隐私”>“位置服务”>“MyApp”>“正在使用” )。 通过运行相同的应用程序在iOS 7模拟器工作正常,并能够检测经纬度。 仅供参考:我正在使用Xcode 6来构build应用程序。 任何帮助/build议将有所帮助。