标签: mapkit

calloutAccessoryControlTapped未调用/触发

我在我的应用程序中使用了这个例子,

http://spitzkoff.com/craig/?p=81

但它没有调用/触发calloutAccessoryControlTapped,因为我点击了配件控件.

这是我的代码.

- (void)viewDidLoad {
    MapAnnotation *annotation = nil;
    annotation = [[MapAnnotation alloc] initWithCoordinate:[[trackPointsArray objectAtIndex:trackPointsArray.count - 2] coordinate]];
    [mapView addAnnotation:annotation];
    [super viewDidLoad];
}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    MKAnnotationView *annotationView = nil;

    // start pin
    static NSString *StartPinIdentifier = @"StartPinIdentifier";
    MKPinAnnotationView *startPin = [annotationView dequeueReusableCellWithIdentifier:StartPinIdentifier];

    if (startPin == nil) {
        startPin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:StartPinIdentifier] autorelease];
        startPin.animatesDrop = YES;
        startPin.pinColor = MKPinAnnotationColorGreen;
        startPin.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        startPin.canShowCallout = YES;
        startPin.enabled = YES;

        UIImage *image = …
Run Code Online (Sandbox Code Playgroud)

mapkit

5
推荐指数
1
解决办法
8291
查看次数

从MKMapView中找出您所在的区域

有没有办法从MKMapView确定你所在的区域?也就是说,如果地图的中心位于海洋中,我们可以告诉用户:地图的中心位于海洋上方,或者如果地图位于绿色区域的中心:地图的中心位于公园之上......

我能想到的唯一方法是创建可见屏幕的屏幕截图并使用以下方法分析每个位的颜色:iOS - 检测像素的颜色?

但是我想知道是否有人能想到的更简单的方法!

编辑

为了让我更清楚我正在寻找什么,我基本上是在寻找一种方法将地图的一部分变成游戏的自上而下的水平,不同的区域由地图的区域决定......

mapkit mkmapview ios

5
推荐指数
1
解决办法
485
查看次数

在MapKit中沿弧形设置可视元素的动画

如何在arckit中创建的弧形视觉元素添加动画和动画?

以下代码将在两点之间创建一个漂亮的弧.想象一下,动画视觉将代表沿着这条弧线飞行的飞机.

-(void)addArc
{
    CLLocationCoordinate2D sanFrancisco = { 37.774929, -122.419416 };
    CLLocationCoordinate2D newYork = { 40.714353, -74.005973 };
    CLLocationCoordinate2D pointsArc[] = { sanFrancisco, newYork };
    //
    MKGeodesicPolyline *geodesic;
    geodesic = [MKGeodesicPolyline polylineWithCoordinates:&pointsArc[0]
                                                     count:2];
    //
    [self.mapView addOverlay:geodesic];
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

objective-c mapkit mkmapview ios

5
推荐指数
1
解决办法
2049
查看次数

有没有办法改变MKAnnotationView的leftCalloutAccessoryView的高度?

我想在标注中显示2行以上的数据.我现在知道注释标题和字幕都限制为每行1行.

阅读以下Apple文档意味着如果您继承MKAnnotationView并覆盖leftCalloutAccessoryView,则可以创建自定义标注视图.这有效,但似乎标注的高度固定为某个值.例如,无论我做多大height,呼叫的高度都是有限的.

我在这里错过了什么吗?如果不是什么是显示一些额外信息的好方法?我知道rightCalloutAccessory,但我宁愿不必点击注释然后点击附件只是为了获得更多的信息.

import UIKit

class MyMKAnnotationView: MKAnnotationView {

  override var leftCalloutAccessoryView: UIView! {
    get {
      let height: CGFloat = 100.0
      return UIView(frame: CGRectMake(0,0,50,height))
    }
    set {

    }
  }
}
Run Code Online (Sandbox Code Playgroud)

子类化注释您可以按原样使用MKAnnotationView类,也可以将其子类化以根据需要提供自定义行为.类的image属性允许您设置注释视图的外观而无需直接子类化.您也可以创建自定义子类作为方便,并使用它们将注释视图置于已知状态.例如,MKPinAnnotationView子类将注释视图的内容初始化为图钉图像.

子类化MKAnnotationView没有特殊要求.但是,以下列表包含您可能想要子类化的一些原因以及为实现所需行为而将覆盖的一些方法:

要将注释视图置于一致状态,请提供自定义初始化方法.然后,您的自定义初始化方法将调用initWithAnnotation:reuseIdentifier:初始化超类.

要提供自定义标注视图,请覆盖leftCalloutAccessoryView方法并使用它来返回视图.

如果在iOS 4.0及更高版本中支持可拖动注释视图,则子类负责将dragState属性中的值更改为拖动操作中关键转换点处的适当值.有关更多信息,请参阅该属性的说明.

mapkit mkannotationview ios

5
推荐指数
0
解决办法
398
查看次数

从Screen Swift MapKit中心获取位置

我是Swift Programming的新手,我正在尝试构建一个应用程序,我可以使用MapKit和Swift 2获取视图中心的坐标.

我已经可以获得当前位置,但是如果我在地图上移动,我需要将位置设置为新点,这将是屏幕的中心.

你可以帮帮我吗?

问候,

location screen center mapkit swift

5
推荐指数
1
解决办法
4267
查看次数

如何在MKAnnotationView中自定义标注中的标题/字幕字体或隐藏它们?

我有一个calloutDetail的观点: annotationView.detailCalloutAccessoryView = mapInformationView.view

它工作正常,但我不想显示标题/副标题,只是我的自定义视图.但是当我将标题/副标题留空时,不会显示标注.

那么,我如何隐藏它们或只是改变它们的字体大小和名称?

title mapkit mkannotation callout swift

5
推荐指数
1
解决办法
422
查看次数

自iOS 9以来,VectorKit/OpenGL在MKMapView中崩溃

我可以从Crashlytics看到我的一些应用程序用户遇到以下崩溃.我自己从未见过这些,也不知道如何重现它们,因为它们在堆栈跟踪中没有我的代码.我已经读过OpenGL,当应用程序在后台时尝试更新表面时,可能会发生一些崩溃.不确定这是否是这种情况,因为在iOS 9之前没有发生崩溃.

我在地图上有几个注释,自定义MKAnnotationView派生视图,一些自定义叠加和MKTileOverlay派生的tile源.地图处理代码和叠加层是Objective-C,但我的应用程序也有一些Swift代码.

有没有人有任何想法可能是崩溃的原因?

1)

Thread : Crashed: com.apple.maps.geogl.renderQueue
0  VectorKit                      0x18c82a894 ___ZN3ggl10GLRenderer5frameEPNS_12RenderTargetEPNS_11RenderQueueE_block_invoke_2 + 876
1  VectorKit                      0x18c82a47c ___ZN3ggl10GLRenderer5frameEPNS_12RenderTargetEPNS_11RenderQueueE_block_invoke + 212
2  libdispatch.dylib              0x182625630 _dispatch_call_block_and_release + 24
3  libdispatch.dylib              0x1826255f0 _dispatch_client_callout + 16
4  libdispatch.dylib              0x182631634 _dispatch_queue_drain + 864
Run Code Online (Sandbox Code Playgroud)

2)

Thread : Crashed: com.apple.mapdisplay.stylesheetLoadQueue
0  libdispatch.dylib              0x183ec2a90 dispatch_async + 76
1  libdispatch.dylib              0x183ec2a88 dispatch_async + 68
2  VectorKit                      0x18df501c4 std::__1::__function::__func<-[VKTileSetBackedTileSource setStyleManager:]::$_0, std::__1::allocator<-[VKTileSetBackedTileSource setStyleManager:]::$_0>, void (std::__1::shared_ptr<gss::StyleManager>, bool)>::operator()(std::__1::shared_ptr<gss::StyleManager>&&, bool&&) + 176
3  VectorKit                      0x18e11533c std::__1::__function::__func<gss::StyleManager::addFinishedDecodingGlobalPropertiesCallback(std::__1::function<void (std::__1::shared_ptr<gss::StyleManager>, bool)>)::$_0, std::__1::allocator<gss::StyleManager::addFinishedDecodingGlobalPropertiesCallback(std::__1::function<void (std::__1::shared_ptr<gss::StyleManager>, bool)>)::$_0>, void (bool)>::operator()(bool&&) …
Run Code Online (Sandbox Code Playgroud)

opengl-es objective-c mapkit ios

5
推荐指数
1
解决办法
544
查看次数

MKAnnotationView未在iOS 11中显示

我正在app store上运行一个应用程序,它具有带其他功能的地图视图.

一切都运行良好,直到iOS 10(iOS 11以外的所有版本),现在当我在iOS 11上测试相同的应用程序时,MKAnnotationView没有显示(这只发生在iOS 11).

没有显示任何异常/错误.我考虑过Apple的文档,但API中没有任何这样的弃用,但它仍然没有用.

有人可以在这个问题上帮助我.

annotations mapkit mkannotationview ios11

5
推荐指数
1
解决办法
2358
查看次数

ios11 MKAnnotation没有显示两个注释

当我将注释添加到地图时,它们有时会显示,有时不会取决于它们彼此之间的距离.如果他们在同一个房子里,就说一个人不会出现.我如何让他们两个显示?我是否需要制作自定义注释类?我听说ios11有一个丛集功能,我需要使用它吗?这是代码(删节):

import UIKit
import MapKit
import Firebase

class GameViewController: UIViewController {


@IBOutlet weak var mapView: MKMapView!

fileprivate var locations = [CLLocation]()
fileprivate var userLocations = [(loc: CLLocation, name: String, team: String)]()
fileprivate var userAnnotations = [MKAnnotation]()
fileprivate var hasBeenUP = false

var ref: FIRDatabaseReference!
let uid = FIRAuth.auth()!.currentUser!.uid

var timer = Timer()
var timeLeft = 0.0
var firstTimer = Timer()

var name = ""
var team = ""

override func viewDidLoad() {
    super.viewDidLoad()
    let center = CLLocationCoordinate2D(latitude: 47.786769, longitude: -20.413634) …
Run Code Online (Sandbox Code Playgroud)

mapkit ios swift ios11

5
推荐指数
1
解决办法
739
查看次数

MapKit - iOS 13 - How to show pin annotations on top on the user location annotation?

Currently, when I try to add an annotation to the map in the user's location the annotation is not showing up. When I set the annotation (using the same code) besides the user's location it does show up.

The code:

let annotation = MKPointAnnotation()
annotation.coordinate = coordinate // set coordinate
annotation.title = "Title"
annotation.subtitle = "Subtitle"
mapView.addAnnotation(annotation)
Run Code Online (Sandbox Code Playgroud)

mapkit swift ios13

5
推荐指数
1
解决办法
250
查看次数