GMSMarker将定制uiview作为制造商展示

时间:2016-03-10 14:19:32

标签: ios objective-c google-maps

想在google地图上的pin上显示这种类型,如何实现这一点。

2 个答案:

答案 0 :(得分:0)

来自文档:

更改默认标记图标

  

如果要更改默认标记图像,可以设置自定义   图标。自定义图标始终设置为UIImage对象。下列   代码段创建一个带有以伦敦为中心的自定义图标的标记,   英国。该代码段假定您的应用程序包含图像   名为“house.png”。

more:

<强>目的-C

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.title = @"London";
london.icon = [UIImage imageNamed:@"house"];
london.map = mapView_;

答案 1 :(得分:0)

我必须为选定和未选择的标记做类似的事情。但是这个想法仍然和你想做的一样。

假设您有一个parkingObject模型,在绘制标记时:

-(void) plotMarkers{
    for (ParkingObject *parkingMarker in parkingArray){
        GMSMarker *marker = [[GMSMarker alloc] init];

        marker.position = parkingMarker.position;

        marker.userData = parkingMarker;
        marker.icon = [self createMarker:marker withImageName:@"markerIcon.png"];
        marker.infoWindowAnchor = CGPointMake (0.5, 1);
        marker.map = mapView_;
    }
}

使用不同的图像和数据创建自定义标记:

- (UIImage*) createMarker: (GMSMarker* )marker withImageName:(NSString* )imageName{

    ParkingObject *parkingObject = marker.userData;

    if([imageName isEqualToString:@"markerSelected.png"]){
        MarkerSelected * infoWindow = [[[NSBundle mainBundle]loadNibNamed:@"MarkerSelected" owner:self options:nil]objectAtIndex:0];
        infoWindow.markerImage.image = [UIImage imageNamed:imageName];
        return [self imageFromView:infoWindow];
    }
    else{
        Marker * infoWindow = [[[NSBundle mainBundle]loadNibNamed:@"Marker" owner:self options:nil]objectAtIndex:0];
        infoWindow.priceLabel.text = [NSString stringWithFormat:@"$%.0f",parkingObject.rate.floatValue];
        infoWindow.markerImage.image = [UIImage imageNamed:imageName];
        return [self imageFromView:infoWindow];
    }
}

您需要创建一个具有您可以设置的图片/图标/文字属性的marker.xib

这只是示例代码,您需要根据自己的需要对其进行自定义。