我想显示自定义UIView而不是Google Maps Marker(iOS SDK)的默认UIView。 有一个属性可以设置图标但是图标在我的情况下是不够的。 我从后端收到一张图像,该图像应放在自定义标记内:
我知道我可以完全修改MarkerInfoWindow,但这不是我需要的: custom-info-window-for-google-maps
如何覆盖标记视图?
答案 0 :(得分:0)
事实证明,我必须只使用Icon属性。 为了实现我的目标,必须使用图形上下文将两个图像渲染成一个。
答案 1 :(得分:0)
Google地图GMSMarker有一个属性iconView
,可让我们为标记设置自定义UIView
。您需要创建xib,在其中可以管理来自后端的图像和要显示的其他数据。下面的代码段可用于设置自定义标记视图。
- (void)setCustomMarker {
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:51.5 longitude:-0.127 zoom:14];
_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
self.view = _mapView;
_mapView.delegate = self;
UIImage *house = [UIImage imageNamed:@"House"];
house = [house imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
_londonView = [[UIImageView alloc] initWithImage:house];
_londonView.tintColor = [UIColor redColor];
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
_london = [GMSMarker markerWithPosition:position];
_london.title = @"London";
_london.iconView = _londonView;
_london.tracksViewChanges = YES;
_london.map = self.mapView;
}
在您的情况下,londonView
应该是UIView
,您可以将其设置为iconView属性。
Google maps implementation for custom marker section在实施时要考虑的事项。
答案 2 :(得分:0)
1。根据您的要求(使用.xib和.swift)文件创建自定义视图
MapIconView.swift和MapIconView.xib
class MapIconView: UIView {
class func createMyClassView() -> MapIconView {
let myClassNib = UINib(nibName: "MapIconView", bundle: nil)
return myClassNib.instantiate(withOwner: nil, options: nil)[0] as! MapIconView
}
}
2。设置自定义标记iconView
@IBOutlet weak var mapView: GMSMapView!
let markerView = MapIconView.createMyClassView()
marker.iconView = markerView
marker.map = self.mapView
3。地面锚完全没有出现
marker.groundAnchor = CGPoint(x: 0.5, y: 0.5)