Zの順序MKAnnotationViews
-
16-09-2019 - |
質問
もしかしたらかなり悔の制限MKMapKit.私の現在の問題のz順序のアノテーション、特にとしているチ。た場合のデフォルトのz軸順のmapkitす:
- の注文が表示されます。Z順序とは関係のない部分ですが、注釈を追加しました。
- 場合の注釈が終了のものに触れると、トップ注釈が一般的なファイルは、永久に、底部のアノテーションを期待でしょうがない、ヒットの検出ないものを描きます。から評価を頂きました。
たって解決#1のようなものを使った次のコードをwebするある程度のコントロールを及z軸順)
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { for (MKAnnotationView * annView in views) { TopBottomAnnotation * ann = (TopBottomAnnotation *) [annView annotation]; if ([ann top]) { [[annView superview] bringSubviewToFront:annView]; } else { [[annView superview] sendSubviewToBack:annView]; } } }
走るアノテーションの意見渡mapView:didAddAnnotationViews:調整そのz軸順なfix#1.問題は、今のファイルは、永久に見ないものもへのアノテーション。のMapKitへといたる、すべての部屋の机などに古さを感じの層順序にでも行うことが必要層に上記のすべての注釈する必要があります。)でもどうで混乱してすべてのMKAnnotationViewsございますのsuperview(プライベートクラスのMKOverlayView).いと思ってしまうの合理的デザインを描画の順序にでもこのオーバーレイ。
で解決#1、#2順調に進んでいるのでしょうか?
解決
あなたはこれを追加してみてくださいすることができます
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview bringSubviewToFront:self];
[super touchesBegan:touches withEvent:event];
}
副作用は、マーカーをタッチするたびに、それはまた、それがユーザーがフォーカスされているものなので、実際に賢明であるzオーダーの前にポップすることである。
他のヒント
ラミンは、それは私がやろうとしています何のために最適です。でも、私は定義されたカスタム注釈ビューを持っていませんでした。私は、カテゴリを使用してこれを解決し、それが完璧に働いた!
ここではヘッダである:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MKPinAnnotationView (ZIndexFix)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end
と実装ます:
#import "AEBMapViewCategory.h"
@implementation MKPinAnnotationView (ZIndexFix)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview bringSubviewToFront:self];
[super touchesBegan:touches withEvent:event];
}
@end
に別の解決策、セットアップ注釈ビュー層のZPOSITION(annotationView.layer.zPosition)を試してみてください
(無効)のMapView:(MKMapView *)のMapViewのdidAddAnnotationViews:(NSArrayの*)ビュー;