- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题相当简单,但我似乎无法弄清楚。
我正在尝试向我的 map View 添加一个刷新按钮,如果有任何更新,该按钮将返回到服务器并检索新位置。我下面的代码已经可以使用 viewdidload 方法第一次调用服务器,并且可以将服务器上的所有位置绘制到 map 上。我现在需要的是一个按钮,无论何时按下它都会发出相同的调用,我正在为我的所有代码使用一个类,因此非常感谢您提供可以轻松与代码合并的最简单的解决方案。
我对 ios 编程也很陌生,因此任何有关如何整理我的代码的建议也将不胜感激。
这是我的 View Controller ,其中包含我的所有代码。
//ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.mapView.delegate = self;
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
[self.mapView setShowsUserLocation:YES];
} else {
[locationManager requestWhenInUseAuthorization];
}
NSURL *jsonFileUrl = [NSURL URLWithString:@"http://sample.name/service.php"];
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:jsonFileUrl];
[NSURLConnection connectionWithRequest:urlRequest delegate:self];
}
#pragma mark NSURLConnectionDataProtocol Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
_downloadedData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_downloadedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSMutableArray *_locations = [[NSMutableArray alloc] init];
NSError *error;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:_downloadedData options:NSJSONReadingAllowFragments error:&error];
CLLocationCoordinate2D coordinate;
for (int i = 0; i < jsonArray.count; i++)
{
NSDictionary *jsonElement = jsonArray[i];
MKPointAnnotation* marker = [[MKPointAnnotation alloc] init];
marker.title = jsonElement[@"Name"];
marker.subtitle = jsonElement[@"Address"];
coordinate.latitude = [jsonElement [@"Latitude"] doubleValue];
coordinate.longitude = [jsonElement [@"Longitude"] doubleValue];
marker.coordinate = coordinate;
[_locations addObject:marker];
}
[self.mapView addAnnotations:_locations];
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
static NSString *identifier;
{
if (annotation == mapView.userLocation) return nil;
MKAnnotationView *annotationView;
if (annotationView == nil) {
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
annotationView.image = [UIImage imageNamed:@"blue_pin.png"];
} else {
annotationView.annotation = annotation;
}
return annotationView;
}
return nil;
}
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[self.mapView setShowsUserLocation:YES];
}
}
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
CLLocationCoordinate2D myLocation = [userLocation coordinate];
MKCoordinateRegion zoomRegion = MKCoordinateRegionMakeWithDistance(myLocation, 10000, 10000);
[self.mapView setRegion:zoomRegion animated:YES];
}
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)InterfaceOrientation
{
return (InterfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)Refresh:(id)sender {
}
@end
最佳答案
您可以通过评论找到我的解决方案。
刷新或收到响应时删除旧数据。
- (IBAction)action_goToManageDevice:(id)sender
{
[self reloadData];
}
- (void)reloadData
{
// Remove old annotation
[self.mapView removeAnnotations:self.mapView.annotations];
// reload your data
NSURL *jsonFileUrl = [NSURL URLWithString:@"http://sample.name/service.php"];
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:jsonFileUrl];
[NSURLConnection connectionWithRequest:urlRequest delegate:self];
}
关于ios - 连接到服务器然后在 mkmapview 上绘制坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757485/
在我当前设计的应用程序中,我有一个带有覆盖层的 MKMapView (顺便说一句,自定义的 MKPolylines),我希望能够检测到触摸事件这些覆盖层并为每个覆盖层分配特定的操作。有人可以帮我解决这
我在我的 .xib 上放置了一个 MKMapView。 它工作正常,但我需要 map 根据罗盘方向旋转? 我读过有关“指南针模式”的内容。 也许我需要将 compassMode 的 MKMapView
我有一个带有注册委托(delegate)的 MKMapView,因此我可以监听区域更改事件(具体来说,regionDidChangeAnimated)。我正在寻找一种可靠的方法来判断区域更改事件是用户
我正在尝试将 MKAnnotationView 添加到 MKMapView 但我做不到……有人能帮我吗? 这是我的代码: override func viewDidLoad() { super
我想像照片应用程序中那样隐藏和显示导航栏但不会丢失 MKMapView 的功能。用户仍然应该能够双击进行缩放、捏合和缩放,并能够选择注释。 我试过: UITapGestureRecognizer*
我在 MKMapView 上有一个 MKCircle。它是用户可拖动的,但如果用户拖动圆圈外的区域, map 应该会移动。 - (IBAction)createPanGestureRecognizer
我正在开发一款与 map 配合使用的 iPhone 应用程序。在此应用程序中,我需要根据纬度和经度显示一些 parking 位(地址)。至此,我成功完成了,但我想显示相对于用户方向(SE、SW、NE、
如何比较 MKMapView 的当前跨度?我正在使用以下代码: - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)a
我们在我们的一个应用程序中看到了意外行为 - 我们在一个屏幕上显示 map View 上的注释,用户可以通过单击按钮更改显示的注释。 当我们用 iOS7 重建应用程序时,屏幕会定期卡住,即一旦下面的代
我正在尝试创建一个带有 MKMapView 和一个导航到用户位置的按钮的 SwiftUI View 。以下是我的全部代码。我创建了一个名为 MapView 的 View ,它符合 UIViewRepr
我的代码在iOS 7到8上运行良好。昨天进行了更新,我的图钉上的自定义图像已替换为标准的图钉图像。 有什么建议? 我的代码: extension ViewController: MKMapViewDe
我可以使用 MKMApView 组件创建一个 iOS 商业应用程序(在应用程序商店中花费几美元下载)吗? 我知道它是基于 Google 图片,所以...我不知道。 最佳答案 当然,MapKit 已用于
我有用户位置和边界。边界有8个坐标。我需要检查用户是否在边界内。我正在 iPhone 中使用 MapView。 提前致谢。 最佳答案 使用 Map Kit 中的一些内置函数来执行此操作的一种方法是将边
我有一个 MkMapView,并希望将 map 保持在用户位置的中心,就像按下范围按钮时 iPhone map 应用程序所做的那样。 我使用 setCenterCoordinate 方法,因为我不需要
浏览了这里的一些问题后,我对缩放级别和 MKMapView 有了一个大概的了解。然后我发现了这个很棒的博客: http://troybrant.net/blog/2010/01/set-the-zoo
我有一个使用以下代码删除 pin 的功能: ParkPlaceMark *placemark=[[ParkPlaceMark alloc] initWithCoordinate:location];
双击 MKMapView 时:放大。 但是如何缩小呢? 最佳答案 总是使用两根手指来放大和缩小。在模拟器上,您需要按住选项键才能在模拟屏幕上显示“两根手指”(我认为这是 Alt 键,但我在 Mac 上
释放 MKMapView 后,我遇到了奇怪的(?)崩溃。 MKMapView 是我的 View Controller 中的 subview ,在我从导航堆栈中删除该 View 并释放它后,应用程序崩溃
我通过单击按钮缩小 map 。 因此,本地图完全缩小时,如果我尝试再次缩小它,那么它在设置区域时会崩溃。 不确定,但是,有没有办法检测 map 是否达到最大缩放限制? 这是我缩小 map 的代码 -(
我需要获得某种比例因子,它可以告诉我 map 缩放了多少(每当区域发生变化时)。 我的第一个想法是使用跨度的纬度或经度增量值。我会跟踪“旧”值,然后在 map 区域发生变化时更新该值,并将比率与旧值进
我是一名优秀的程序员,十分优秀!