标签: mapkit

调用[locationManager requestWhenInUseAuthorization]时,警报视图会自动消失;

我在打电话

[locationManager requestWhenInUseAuthorization];
Run Code Online (Sandbox Code Playgroud)

在显示MKMapView(showsUserLocation = YES)的屏幕上.这首先看起来很奇怪(Apple应该MKMapView自动处理这个问题,但是当我没有这样做时,XCode就会抱怨).

因此,我获得了警报视图,表明应用程序想要使用您的位置,但警报视图会自动消失.

为什么警报视图会自行消失?

我唯一能想到的事情是,我打电话requestWhenInUseAuthorizationinitWithCoder方法.我只是这样做,因为我认为从viewDidLoad调用它时我看到了Xcode的抱怨.

core-location mapkit ios

33
推荐指数
1
解决办法
6000
查看次数

iOS MapKit用户位置注释的Z-index

我需要在所有其他注释之上绘制当前用户注释(蓝点).现在它正在我的其他注释下面被隐藏起来.我想调整此注释视图的z-index(蓝点)并将其置于顶部,有人知道如何吗?

更新: 所以我现在可以处理MKUserLocationView,但我该如何推进呢?

- (void) mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views {
    for (MKAnnotationView *view in views) {
        if ([[view annotation] isKindOfClass:[MKUserLocation class]]) {
            // How do I bring this view to the front of all other annotations?
            // [???? bringSubviewToFront:????];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

objective-c mapkit ios

32
推荐指数
4
解决办法
1万
查看次数

如何在MKMapView上禁用用户交互?

如何在iOS中禁用用户与整个地图(MKMapView)的互动?我只想禁用缩放,点击等,并显示静态地图.[self.mapView setUserInteractionEnabled:NO]没用.在Stack上找不到谷歌或其他答案的工作解决方案(如果你找到一个有效的答案,请点击链接..).针对iOS 5.应该有一种更简单的方法来实现这一目标.

objective-c mapkit mkmapview ios

32
推荐指数
2
解决办法
2万
查看次数

获得MKMapView的界限

为了设置外部服务器的查询,我想在我正在构建的iPhone应用程序中获取当前Map View的边界.UIView应该响应边界,但似乎MKMapView没有.设置区域并放大地图后,我尝试获取边界.我坚持第一步,试图获得代表地图SE和NW角落的CGPoints.之后我打算用:

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view
Run Code Online (Sandbox Code Playgroud)

将点转换为地图坐标.但我甚至无法做到那么远......

//Recenter and zoom map in on search location
MKCoordinateRegion region =  {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center = mySearchLocation.searchLocation.coordinate;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[self.mapView setRegion:region animated:YES];


//After the new search location has been added to the map, and the map zoomed, we need to update the search bounds
//First we need to calculate the corners of the map
CGPoint se = CGPointMake(self.mapView.bounds.origin.x, mapView.bounds.origin.y);
CGPoint nw = CGPointMake((self.mapView.bounds.origin.x + mapView.bounds.size.width), (mapView.bounds.origin.y + mapView.bounds.size.height)); …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch mapkit bounds mkmapview

31
推荐指数
5
解决办法
3万
查看次数

以自定义纬度/经度创建新的CLLocationCoordinate2D

我觉得这个问题很糟糕,因为看起来这么简单,但是我已经查看了所有相关的资源,尝试了很多我见过别人使用的解决方案的组合,以及什么都没有效果......

我试图迭代我收到的一些XML,并解析XML中坐标的纬度和经度,并将其存储在一个数组中,然后我将从中绘制它.

我的问题是无论我使用什么类型,我如何投射,你有什么,xcode总是发现它的某些问题.

我的.h文件的相关部分:

CLLocationCoordinate2D Coord;
CLLocationDegrees lat;
CLLocationDegrees lon;

@property (nonatomic, readwrite) CLLocationCoordinate2D Coord;
@property (nonatomic, readwrite) CLLocationDegrees lat;
@property (nonatomic, readwrite) CLLocationDegrees lon;
Run Code Online (Sandbox Code Playgroud)

我的.m文件的相关部分:

else if ([elementName isEqualToString:@"Lat"]) {
        checkpoint.lat = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Lon"]) {
    checkpoint.lon = [[attributeDict objectForKey:@"degrees"] integerValue];
}
else if ([elementName isEqualToString:@"Coord"]) {
    checkpoint.Coord = [[CLLocation alloc] initWithLatitude:checkpoint.lat longitude:checkpoint.lon];
}
Run Code Online (Sandbox Code Playgroud)

我得到的当前错误是:"从不兼容的类型'id''分配给'CLLocationCoordinate2D.我认为这意味着初始化函数的返回值不正确,但我不知道为什么因为它是内置函数...

我也尝试过看到别人在做什么对我最有意义的事情:

checkpoint.Coord = CLLocationCoordinate2DMake(checkpoint.lat, checkpoint.lon);
Run Code Online (Sandbox Code Playgroud)

虽然这不会立即返回错误,但当我尝试构建并运行它时,它会给我:

体系结构i386的未定义符号:"_ CLLocationCoordinate2DMake",引自: - Checkpoint.o中的[XMLParser parser:didStartElement:namespaceURI:qualifiedName:attributes:] ld:未找到架构i386的符号collect2:ld返回1退出状态

任何帮助/澄清/推动正确的方向将非常感激,因为我现在非常缺乏想法.

objective-c mapkit ios4 ios

31
推荐指数
2
解决办法
5万
查看次数

通缉:如何可靠,一致地选择MKMapView注释

在调用MKMapViewsetCenterCoordinate:animated:方法(没有动画)后,我想调用selectAnnotation:animated :(带动画),以便从新居中的图钉中弹出注释.

现在,我只是观察mapViewDidFinishLoadingMap:然后选择注释.但是,这是有问题的.例如,当不需要加载其他地图数据时,不会调用此方法.在这些情况下,我的注释未被选中.:(

很好.我可以在设置中心坐标后立即调用它.啊,但在这种情况下,它也有可能存在地图数据加载(但还没有完成加载还).我冒险过早地调用它,动画最多也会变得不稳定.

因此,如果我理解正确,这不是知道我的坐标是否可见的问题,因为它可能几乎偏离屏幕距离并且必须加载新的地图数据.相反,它需要知道是否需要加载新的地图数据,然后相应地采取行动.

有关如何实现这一点的任何想法,或者如何在将注释生效的坐标重新定位到地图视图后以其他方式(可靠地)选择注释?

线索赞赏 - 谢谢!

mapkit mkpinannotationview ios

30
推荐指数
3
解决办法
1万
查看次数

计算远离一个坐标的新坐标x米和y度

我必须在文档中遗漏一些东西,我认为这应该很容易......

如果我有一个坐标,并希望在某个方向上获得距离x米的新坐标.我该怎么做呢?

我正在寻找类似的东西

-(CLLocationCoordinate2D) translateCoordinate:(CLLocationCoordinate2D)coordinate translateMeters:(int)meters translateDegrees:(double)degrees;

谢谢!

iphone location objective-c geolocation mapkit

30
推荐指数
4
解决办法
1万
查看次数

Google Places API违规

我正在使用Google Places API来提取resturants列表,我正在地图上显示它们.但是,由于Apple已经在iOS 6.0中切换了Google的地图服务,我现在违反了Google的使用条款,该条款规定您必须在Google地图上显示Google数据.

"如果您的应用在地图上显示Places API数据,那么该地图必须由Google提供."

https://developers.google.com/places/policies#terms_of_use

我显然需要更改地图,因为我不会发布违反的应用程序.有什么想法或建议怎么办?我应该使用网络视图访问Google地图吗?Apple是否有某种Google Places API替代方案?

编辑:

通过网络视图使用谷歌地图很麻烦,我想找到一个替代方案,虽然它在技术上有用.

mapkit ios google-places-api ios6

30
推荐指数
2
解决办法
3579
查看次数

自定义MKAnnotation标注视图?

我有一个MKPointAnnotation:

let ann = MKPointAnnotation()
self.ann.coordinate = annLoc
self.ann.title = "Customize me"
self.ann.subtitle = "???"
self.mapView.addAnnotation(ann)
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

在此输入图像描述

如何自定义此标注视图以创建我自己的视图而不是预定义的视图?

mapkit ios swift

30
推荐指数
1
解决办法
3万
查看次数

MKAnnotationView - 锁定自定义注释视图以固定位置更新

更新#5我想这是赏金时间.即使使用我发布的代码示例,也有100多个视图并且没有人被刺穿.一些声望点怎么样!

更新#4这是一个非常复杂的问题,所以我创建了一个新的基于选项卡的项目,其中包含我的应用程序的部分,我在这里遇到了麻烦.您可以从以下网址下载:http://www.servinitup.net/CustomCalloutAnnotation.zip 随意打开它(需要添加自己的包标识符才能在手机上运行)并玩它,看看你是否可以得到那个darned标注注释随着针移动!

更新#3尝试使setAnnotation成为教程的CalloutMapAnnotationView的公共方法并直接调用它.没有运气.尽管发生了一些奇怪的事情,唯一感动的是标注的小三角形部分.我无法让整个标注移动.

更新#2仍然没有多少运气,但现在一直在寻找以编程方式创建"缩放到缩放"然后立即撤消它的方法,因此用户永远不会看到更改.希望以编程方式执行此操作与手动执行此操作具有相同的效果,并且callout注释将弹回到它的父级.有任何想法吗?

更新#1在这里玩了之后我已经得到了: - 替换self.calloutAnnotation.coordinate = coords;self.calloutAnnotation.latitude = coords.latitude;self.calloutAnnotation.longitude = coords.longitude; - 随着更改,如果我稍微捏住地图以在引脚更新后放大或缩小,则标注注释会动画到正确的位置,正好在针.

所以现在我需要弄清楚如何在没有用户实际捏缩放的情况下实现这一点.


原帖

我和其他SO用户一起使用这个非常棒的解决方案来创建自定义标注注释:http: //blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/

当您使用标准标注(annotationview.canShowCallout = true)并且当位置更新时,引脚在屏幕上移动,标准标注随着引脚一起跟踪,就像它们被锁定在一起一样.

使用上面的自定义标注解决方案时,当我的图钉在位置更新后移动时,标注注释将保留在其原始位置.当然,我想模仿iOS标准,并有自定义标注注释轨道和引脚.

这是我到目前为止的代码,它成功地移动了注释视图,但不是自定义的callout注释视图:

/* core location broadcasts a notification, and my view controller listens to that notification and calls locationManagerDidFindLocation */
- (void)locationManagerDidFindLocation:(NSNotification *)notif {
    CLLocation *location = [notif.userInfo objectForKey:@"location"];
    CLLocationCoordinate2D coords = [location coordinate];
    MKCoordinateSpan span = MKCoordinateSpanMake((5/69), (5/69));
    MKCoordinateRegion region = …

iphone objective-c mapkit mkmapview mkannotationview

29
推荐指数
1
解决办法
1万
查看次数