在iOS中触摸或点按标记时,如何制作地图气球? 简单地说,我希望我的应用程序的地图功能能够弹出地图气球,以显示标记所在位置的某些信息。
我正在使用谷歌地图,因为我听说现在它比iOS中的Mapkit更准确。
下面的图片是我在这个问题中的目标:
答案 0 :(得分:4)
如果你想为你的标记设置这个自定义地图气球,同时使用谷歌地图sdk for ios,你可以使用这个功能
- (UIView *) mapView: (GMSMapView *) mapView markerInfoWindow: (GMSMarker *) marker
这允许您显示标记的自定义信息窗口,而不是默认的信息窗口。您需要设计一个如图所示的视图,分配所需的值并返回此功能中的视图。请查看之前的帖子,查看making a custom infowindow的示例。您可以通过设置属性marker.infoWindowAnchor
答案 1 :(得分:1)
要创建类似注释的气球,您需要覆盖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控制器并显示它。