2017-05-09 60 views
0

我正在尋找實時對mapkit當前位置點作出反應。我可以使用LocationManager以間隔方式獲取位置,但註釋以更流暢的方式移動。我想捕捉這個動作。有沒有辦法觀察點UIView或座標的位置而不是反應,在我的情況下連接到MKPolyline端點。反應到Mapkit對象值變化

回答

0

你需要創建自己的用戶的位置圖,然後添加對它的觀測者:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(ClubPinAnnotation *)annotation { 

    // If the annotation is the user location, create and return our own dot view 
    if ([annotation isKindOfClass:[MKUserLocation class]]) {    
     MKAnnotationView *userView = [[MKAnnotationView alloc] initWithFrame:CGRectMake(-5, -5, 10, 10)]; 
     userView.layer.cornerRadius = 5; 
     userView.backgroundColor = [UIColor blueColor]; 

     // Observe its on-screen position 
     [userView addObserver:self forKeyPath:@"layer.position" options:NSKeyValueObservingOptionNew context:nil]; 

     return userView; 
    } 

    ... continue processing the other map annotations 
} 

再觀察屏幕上的腳的位置:

- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context { 

    MKAnnotationView *userView = (MKAnnotationView *)object; 

    NSLog(@"User view:%@", userView); 
} 
+0

p.s.對不起,我在Objective-C中回答,但這個想法是一樣的。 – norders

0

動畫可能是一個插值響應。我的猜測,因爲我沒有研究支持這一點。

您可以估計動畫期間,並將MkPolyline作爲動畫期間的插值區域上的計算值作爲時間的函數。