// 緯度経度から座標を求める
CGPoint point = [_mapView convertCoordinate:annotation.coordinate toPointToView:_mapView];
// 座標から緯度経度を求める
CLLocationCoordinate2D coordinate = [_mapView convertPoint:point toCoordinateFromView:_mapView];
// 指定された緯度経度を地図の中心とする
[_mapView setCenterCoordinate:coordinate animated:YES];
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
現在表示中の地図上に、指定座標の有無を判定する
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
CLLocationCoordinate2D selectedCoordinate = xxxxx;
// 現在の地図上に、指定座標が存在するかどうか判定する
CGPoint point = [_mapView convertCoordinate:selectedCoordinate toPointToView:_mapView];
if (CGRectContainsPoint(_mapView.bounds, point)) {
// 現在の地図上に指定座標が存在する場合
} else {
// 現在の地図上に指定座標が存在しない場合
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
2点間の距離をメートル単位で計算
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
表示した地図の画像を写真アルバムに登録する
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- (void) saveMapImage:(id) sender
{
UIGraphicsBeginImageContext(self.mapView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.mapView.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ピンをタッチせずにコールアウトを出す
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- (void)mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views
{
[mapView selectAnnotation:[mapView.annotations lastObject] animated:YES];
}
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
指定座標へ移動する(その1)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
[_mapView setCenterCoordinate:coordinate animated:YES];
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
指定座標へ移動する(その2)
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
MKCoordinateSpan span = kDefaultCoordinateSpan;
self.mapView.region = MKCoordinateRegionMake(kDefaultCLLocationCoordinate, span);
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ピン追加時のアニメーション方法
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
/**
ビュー追加時に呼ばれます。
@param mapView マップビュー
@param annotationViews 追加するアノテーションビュー配列
*/
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)annotationViews
{
// 未使用とする
[annotationViews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[SAWAnnotationView class]]) {
SAWAnnotationView *view = (SAWAnnotationView *)obj;
CGRect frame = view.frame;
view.frame = CGRectOffset(frame, 0, -500);
[UIView animateWithDuration:.4f
animations:^{
view.frame = frame;
}];
}
}];
}
最終更新:2017年04月26日 13:07