谷歌地图为iOS [地图气球]

时间:2013-07-23 07:20:04

标签: ios google-maps google-maps-markers google-maps-sdk-ios

在iOS中触摸或点按标记时,如何制作地图气球? 简单地说,我希望我的应用程序的地图功能能够弹出地图气球,以显示标记所在位置的某些信息。

我正在使用谷歌地图,因为我听说现在它比iOS中的Mapkit更准确。

下面的图片是我在这个问题中的目标:

when an overlay is touched

2 个答案:

答案 0 :(得分:4)

如果你想为你的标记设置这个自定义地图气球,同时使用谷歌地图sdk for ios,你可以使用这个功能

- (UIView *) mapView:   (GMSMapView *)  mapView markerInfoWindow: (GMSMarker *) marker

这允许您显示标记的自定义信息窗口,而不是默认的信息窗口。您需要设计一个如图所示的视图,分配所需的值并返回此功能中的视图。请查看之前的帖子,查看making a custom infowindow的示例。您可以通过设置属性marker.infoWindowAnchor

的值来调整infowindow相对于标记的位置

答案 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控制器并显示它。