iOS でマーカーがタッチまたはタップされているときにマップ バルーンを作成するにはどうすればよいですか? 簡単に言えば、アプリケーションのマップ機能でマップ バルーンをポップアップして、マーカーが配置されている場所に関する特定の情報を表示できるようにしたいと考えています。
今のところ、iOS の Mapkit よりも正確であると聞いたので、Google マップを使用しています。
以下の画像は、この質問での私の目的です。
iOS でマーカーがタッチまたはタップされているときにマップ バルーンを作成するにはどうすればよいですか? 簡単に言えば、アプリケーションのマップ機能でマップ バルーンをポップアップして、マーカーが配置されている場所に関する特定の情報を表示できるようにしたいと考えています。
今のところ、iOS の Mapkit よりも正確であると聞いたので、Google マップを使用しています。
以下の画像は、この質問での私の目的です。
マーカーにこのカスタム マップ バルーンが必要な場合は、ios 用の Google マップ SDK を使用しているときに、次の関数を使用できます。
- (UIView *) mapView: (GMSMapView *) mapView markerInfoWindow: (GMSMarker *) marker
これにより、デフォルトの情報ウィンドウの代わりに、マーカーのカスタム情報ウィンドウを表示できます。写真に示すようにビューを設計し、必要な値を割り当てて、この関数でビューを返す必要があります。カスタム情報ウィンドウの作成例については、この以前の投稿を確認してください。プロパティの値を設定することで、マーカーに対する情報ウィンドウの位置を調整できます。marker.infoWindowAnchor
MKMapView's
バルーンのような注釈を作成するには、メソッドをオーバーライドする必要があります
- (MKAnnotationView *)viewForAnnotation:(id < MKAnnotation >)annotation
このような:
- (MKAnnotationView *)viewForAnnotation:(id < MKAnnotation >)annotation{
static NSString* annotationIdentifier = @"Identifier";
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
if(annotationView)
return annotationView;
else
{
MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
// here we say NO to call out, it means the default popover type view wont open when you click on an //annotation and you can override to show your custom popover
annotationView.canShowCallout = NO;
// here you need to give a ballon image
annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"balloon.png"]];
return annotationView;
}
return nil;
}
注釈をタップしたときに開くカスタム ポップオーバー/ビューを作成するには、MKMapViewDelegate のメソッドをオーバーライドする必要があります。
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
このメソッドでは、Popover Controller を作成して提示する必要があります。