标签: mapkit

正确的标注附件方法和实现

我想知道是否有人能告诉我如何在地图注释中添加正确的标注附件.我尝试的一切似乎都没有到达任何地方,所以任何帮助将不胜感激.

编辑

我已经尝试过这行代码,但注释没有任何不同.

- (MKAnnotationView *)mapview:(MKMapView *)sender viewForAnnotation:(id <MKAnnotation>)annotation 
{
MKAnnotationView *aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@""];
aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
aView.canShowCallout = YES;
aView.annotation = annotation;
return aView;
}
Run Code Online (Sandbox Code Playgroud)

xcode annotations map mapkit ios

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

mapkit默认显示注释

我在mapkit中有一个注释显示自定义图像,显示正常,

但是在录制针脚后,注释显示

当我启动视图时,如何在默认情况下显示注释?丝毫敲击针.

- (MKAnnotationView *)mapView:(MKMapView *)mv viewForAnnotation:(id <MKAnnotation>)annotation
{


    if([annotation isKindOfClass:[MKUserLocation class]])
        return nil; 

    NSString *annotationIdentifier = @"PinViewAnnotation"; 

    MKPinAnnotationView *pinView = (MKPinAnnotationView *) [mapView 
                                                            dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];


    if (!pinView) 
    {
        pinView = [[[MKPinAnnotationView alloc] 
                    initWithAnnotation:annotation 
                    reuseIdentifier:annotationIdentifier] autorelease];

        [pinView setPinColor:MKPinAnnotationColorGreen];
        pinView.animatesDrop = YES; 
        pinView.canShowCallout = YES; 

        UIImageView *houseIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tijereta.png"]];
        pinView.leftCalloutAccessoryView = houseIconView; 
        [houseIconView release];        
    }
    else 
    {
        pinView.annotation = annotation;
    }

    return pinView; 

}
Run Code Online (Sandbox Code Playgroud)

谢谢

annotations mapkit ios

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

如何使用MKMapView完成加载委托,可能"完成显示"委托?

当用户在选择注释时点击保存时,我正在尝试保存mapview的缩略图.当用户尚未放大该注释时,会出现此问题,因此尚未加载关闭缩放级别.

这是用户点击保存后我正在做的事情:

  1. 将bool"save"设置为true
  2. 居中并放大注释(无动画)
  3. 调用mapViewDidFinishLoadingMap委托方法时,如果save为true:
  4. 从视图中创建UIImage并保存.关闭模态视图.

但是,当保存图像并且视图被取消时,实际保存的结果图像实际上还没有完成加载,因为我仍然看到带有网格线的卸载地图,如下所示:

网格线未完成

我的问题是,在保存此缩略图之前,如何确保地图已完成加载并完成显示?

objective-c mapkit ios

12
推荐指数
2
解决办法
7743
查看次数

如何按固定百分比扩展MKMapRect?

我想得到一个结果MKMapRect,它在所有方向上比当前大10-20%visibleMapRect.如果这是一个CGRect,我会使用带有负x和y值的CGRectInset,为我提供一个反向插图(即一个更大的rect).不幸的是,MKMapInset不支持负插入值,所以它并不那么容易.

如果map rect的值是可识别单位但原点x和y值大约为4.29445e + 07,宽度/高度为2500-3000,则可能更容易.

我写一个类别手动做了大约10秒,但我想确保我没有先丢失一些东西.有没有更简单的方法来扩展MKMapRect?

objective-c mapkit

12
推荐指数
2
解决办法
2580
查看次数

MapKit中的自定义地图样式

我正在寻找一种在iOS 7中实现自定义地图样式的方法,就像使用Google地图一样.我发现一些帖子说这对MapKit来说是不可能的,但是它们都被发布了一段时间.为了澄清,按照风格我说的是自定义颜色,最好也是字体.下面是自定义Google地图样式的示例.

http://www.servendesign.com/wp-content/uploads/2011/12/zaarley-custom-google-maps.jpg

出于性能原因,我更喜欢使用MapKit,但如果不支持我,我也愿意使用其他框架.我见过的是MapBox和Cloudmade,当然还有Google Maps SDK.

有没有办法用MapKit做到这一点?如果没有,最好的方法是什么?

google-maps mapkit cloudmade ios mapbox

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

- [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]错误

这是我的代码,显示地图上当前位置的警报和蓝点:

MapName.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>


@interface MapName : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate>

@property (strong, nonatomic) IBOutlet MKMapView *MapName;
@property (strong, nonatomic) CLLocationManager *locationManager;

@end
Run Code Online (Sandbox Code Playgroud)

MapName.m

- (void)viewDidLoad
{
[super viewDidLoad];

self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.delegate = self;
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
    [self.locationManager requestWhenInUseAuthorization];
}
[self.locationManager startUpdatingLocation];

//Center the map
[self gotoLocation];

//Show current position
_MapName.showsUserLocation = YES;

}
Run Code Online (Sandbox Code Playgroud)

我已将密钥NSLocationWhenIsUseUsageDescription作为字符串添加到Info.plist中.我在Xcode上仍然遇到同样的错误.

iphone core-location mapkit xcode6 ios8

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

如何在iOS8中使用MKMapView的"显示用户位置"?

MKMapView在Interface Builder中向视图添加组件时,可以使用复选框配置它显示的内容:

在此输入图像描述

当您选中"用户位置"时,它会自动在地图上显示用户的位置.

但是,从iOS 8开始,您应该在显示用户位置之前询问位置许可.如果不这样做,您将在控制台中收到"尝试启动MapKit位置更新而不提示"警告.

所以我已经NSLocationWhenInUseUsageDescription为plist 添加了一个键,并将此代码添加到viewDidLoad:

if CLLocationManager.authorizationStatus() == .NotDetermined {
    CLLocationManager().requestWhenInUseAuthorization()
}
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.我确实得到了一个要求许可的弹出窗口,但在我选择一个答案之前,它自己隐藏,地图加载到它下面,我在控制台中收到警告.

我知道showsUserLocation只有获得许可后我才能在代码中设置属性; 但我的观点是,IB中的这个复选框应该做同样的事情,除了它立即开始跟踪.这是否意味着自iOS 8以来我们根本不应该使用此复选框?还是我错误地使用它?

-

更新:实际上,无论是否设置"显示用户位置",弹出窗口都会自行隐藏.我尝试过viewWillAppear或者viewDidAppear做过,但这没有帮助.所以,我不知道究竟在何处,我应该叫requestwhenInUseAuthorization使用时MKMapView...

core-location mapkit cllocationmanager ios ios8

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

MapKit或Google Maps SDK?(IOS)

我正在做一个需要带有标记的地图(包括地址和图片)以及可能需要GPS的应用程序.我正在从Parse数据库中提供数据(地址和图片),我正在为iOS开发...我听说本机更好,但我是谷歌和谷歌地图的忠实粉丝.你会推荐哪一个?Mapkit还是GoogleMaps?一个人比另一个人的好处是什么?

谢谢.玩笑

iphone google-maps mapkit ios

12
推荐指数
1
解决办法
7928
查看次数

MKMapView无法加载具有HTTP 410错误的切片

我有问题MKMapView.放大时,地图无法加载切片.

-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error 
Run Code Online (Sandbox Code Playgroud)

错误:

Domain = GEOErrorDomain Code = -204"(null)"UserInfo = {SimpleTileRequesterUnderlyingErrors =("Error Domain = GEOErrorDomain Code = -204 \"(null)\"UserInfo = {HTTPStatus = 410,NSErrorFailingURLStringKey = http://gspe19.ls .apple.com/tile.vf?标志= 1&式= 20&大小= 2&规模= 0&v = 11037825&Z = 15&x = 6205&Y = 12336&SID = 0246704635757302674107153038443966765357&ACCESSKEY = 1454685602_q3bVUYvHBdxsSo0A_j0fK7EyQ9b21NPShV7GRLzr4WFkkhxB4vO7%2BlXcGsXJ4zZHvhTaLVWsyPa3PlU60cDrmrFwmwCYBGrLA9mChV%2FHoRHoTU9AGI72VQP9UKZW%2B0GKqfRhpcw4xr%2F%2FTTVgJZ7wU4U4KnA8K2rVVQ%2FOfFHJq7OO4nYecTvy0ur4I9D3Sxf%2Btn9DcXU8agDRJignB }",...

编辑: 似乎它以某种方式与缓存有关,但我不确定.在地图应用程序中加载相同的地图区域后,此问题会消失一段时间.

提前致谢

macos mapkit mkmapview ios

12
推荐指数
2
解决办法
1470
查看次数

检测calloutAccessoryControlTapped只点击rightCalloutAccessoryView

calloutAccessoryControlTapped也叫我上标注视图只需轻按和这种行为是正确的.但是,我如何检测用户是否已经点击了正确的附件视图(在我的情况下是一个详细的公开按钮)而不仅仅是在视图中?

我添加了一个简单的检查,但它不起作用.

import UIKit
import MapKit

extension MapVC: MKMapViewDelegate, CLLocationManagerDelegate
{    
    func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
    {
        if control == view.rightCalloutAccessoryView
        {
            ... // enter here even if I tapped on the view annotation and not on button
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

mapkit uicontrol ios swift

12
推荐指数
1
解决办法
1739
查看次数