- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我多年来一直在寻找一种解决方案,让我可以通过 Wi-Fi 显示我的设备位置,但实际上并未连接到任何网络。所以它只是打开了 Wi-Fi,但是我尝试过的每一种方法都会返回我位于伦敦的信息。有谁知道为什么会发生这种情况?
我正在使用的方法
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 1000;
#ifdef __IPHONE_8_0
if(IS_OS_8_OR_LATER) {
// Use one or the other, not both. Depending on what you put in info.plist
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestAlwaysAuthorization];
}
#endif
if ([self shouldFetchUserLocation])
{
[locationManager startUpdatingLocation];
}
// Do any additional setup after loading the view.
}
-(BOOL)shouldFetchUserLocation
{
BOOL shouldFetchLocation= NO;
if ([CLLocationManager locationServicesEnabled])
{
switch ([CLLocationManager authorizationStatus])
{
case kCLAuthorizationStatusAuthorized:
shouldFetchLocation= YES;
break;
case kCLAuthorizationStatusDenied:
{
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Error" message:@"App level settings has been denied" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
alert= nil;
}
break;
case kCLAuthorizationStatusNotDetermined:
{
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Error" message:@"The user is yet to provide the permission" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
alert= nil;
}
break;
case kCLAuthorizationStatusRestricted:
{
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Error" message:@"The app is recstricted from using location services." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
alert= nil;
}
break;
default:
break;
}
}
else{
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:@"Error" message:@"The location services seems to be disabled from the settings." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
alert= nil;
}
return shouldFetchLocation;
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations {
NSLog(@"location fetched in delegate");
CLLocation* location = [locations lastObject];
NSDate* eventDate = location.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (fabs(howRecent) < 15.0) {
// If the event is recent, do something with it.
NSLog(@"inside loop.... latitude %+.6f, longitude %+.6f\n",
location.coordinate.latitude,
location.coordinate.longitude);
}
NSLog(@"latitude %+.6f, longitude %+.6f\n",
location.coordinate.latitude,
location.coordinate.longitude);
NSLog(@"\nlatitude: %+.6f \nlongitude: %+.6f", location.coordinate.latitude, location.coordinate.longitude);
[locationManager stopUpdatingLocation];
[locationManager stopMonitoringSignificantLocationChanges];
if(locationManager!=nil){
locationManager.delegate= nil;
locationManager= nil;
}
}
输出:
(不带要点的输出)
最佳答案
您需要移动此代码:
[locationManager stopUpdatingLocation];
[locationManager stopMonitoringSignificantLocationChanges];
返回有效位置后调用的另一个函数。现在你只让 locationManage
更新你的位置一次,这很可能是一个缓存位置(伦敦?)。在返回有效位置之前,通常需要多次调用 didUpdateLocations
委托(delegate)。
更新:
根据 OP 的要求...这里有一些关于基于 OP 提供的附加信息的定位服务的更多信息。
如果您的设备没有 GPS 并且您没有连接到网络(手机/WiFi),那么您所要求的是不可能的。要接收位置数据,您至少需要以下其中一项:
如果至少不满足上述条件之一,您将无法接收位置数据。如果设备中没有 GPS 芯片,则会使用网络连接(手机信号塔/WiFi)来计算您的位置。为此,设备会根据其连接的网络确定位置信息。这可以是手机信号塔位置或已知 IP 地址位置和 WiFi 位置。这种方法不如 GPS 准确,但它通常可以更快地返回位置数据并且使用更少的电池电量。
关于iOS 地理位置(总是返回该位置在英国伦敦),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117229/
我希望能够在本地运行查询,比较位置的纬度和经度,这样我就可以根据距离对我捕获的某些地址运行查询。 我找到了一个免费数据库,其中包含有关邮政编码的信息,但我想要此信息以获取更具体的地址。我查看了谷歌的地
这个问题已经有答案了: Why is my variable unaltered after I modify it inside of a function? - Asynchronous code
我正在为我正在构建的网站使用此免费模板:http://blackrockdigital.github.io/startbootstrap-scrolling-nav/ 我正在使用地理定位服务 (Goo
我有一个 JSON 格式的来自世界各地的用户列表。列表中的每个项目都有一个位置信息。 如何将这些位置转换为正确的经度和纬度? 如何过滤这些位置以仅获取距我当前位置 50 英里范围内的位置(假设我知道如
我多年来一直在寻找一种解决方案,让我可以通过 Wi-Fi 显示我的设备位置,但实际上并未连接到任何网络。所以它只是打开了 Wi-Fi,但是我尝试过的每一种方法都会返回我位于伦敦的信息。有谁知道为什么会
我想在移动网站上制作一种指南针。这就是我所拥有的: 这就是我想要的: 我将当前位置保存在本地存储中。然后,例如再前进 1 公里,我检查我的位置并检查两点之间的距离。 现在我想要一个从当前位置到本地存储
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在尝试制作我的第一个与地理定位和本地通知相关的 Android 系统应用程序。我想象它是这样的......有基本的 Activity MainActivity。启动后,它会启动一个服务 TestS
我正在寻找一个快速 MySQL 查询,它可以从一个简单的表中返回最近的位置: 表:位置: id | city | latitude | longitude -----------
我正在为一家欧洲公司研究 Windows Azure 的功能。他们的担忧之一是数据将由美国的服务器处理/存储。 (关于爱国行为) 微软确实提供了选择地理位置的选项,但我还没有发现他们保证数据不会在美国
Nog 我有以下页面,其中包含前往预定义目的地的路线: example directions 这与以下代码完美配合: My Google Maps Demo
我正在寻找有关全天在 Android 上检查位置(大约每 15 分钟)并存储地理坐标的信息。当应用程序在后台时也会发生这种情况,而不仅仅是当应用程序在前台运行时。我不确定搜索词,我似乎找不到任何东西。
我想创建一个网站,其功能应该是阅读您当前的标题。 最佳答案 我假设您已经知道如何 use the JavaScript geolocation API以及如何在 JavaScript 中呈现旋转箭头,
我有一个关于地理定位和 javascript 变量范围的问题。我一直在玩弄它,但我是一个 php 人,js 不是我最好的语言。我正在制作谷歌地图,我想将用户坐标设置为 map 中心并设置缩放比例。如果
我在一个目录中有一堆营业地点的记录。实际上大约有 4,500 个。 目前我的速度有点问题,有两个原因。当用户加载页面时,系统会要求他们输入邮政编码。 当他们这样做时,页面将重新加载并获取所有企业,fo
在我的 Ionic 应用程序中,我使用以下选项实现了地理位置 watchPosition。我的选项设置为每 10 秒触发一次,但它每秒触发一次。通常每秒会触发两次。 function watchPos
我和我的搭档正在为我们的学校论文开发一个练习 Web 应用程序。我们正在尝试使用地理定位 api 的 watchposition() 函数获取运行者的位置并在他锻炼期间跟踪他。在屏幕上,运行者可以检查
我正在尝试制作一个按钮以在设备上启动谷歌地图并打开到特定位置[不只是纬度/经度,尽管这是后备]。 我有一个地点 ID,并想启动一个 geo: 到该地点的 Intent 。我似乎找不到我需要的 uri
我正在通过 WIFI 和 cable 连接使用 LAN。两者在相同的 IP 下对外部可见。 但不知何故,当我尝试获取地理定位时 (HTML5 Geolocation API 上的经度和纬度),它会显示
我测试我的地理定位查询已经有一段时间了,直到现在我还没有发现任何问题。 我试图搜索给定半径内的所有城市,通常我使用城市的坐标搜索城市周围的城市,但最近我尝试在城市周围搜索并发现城市本身没有返回。 我的
我是一名优秀的程序员,十分优秀!