2017-04-09 158 views
0

我想要做的是将谷歌地图标记设置为仅从我从火力点下载的UIImage。目前这里是我的代码:谷歌地图标记图标作为带边框的圆形图片

if let downloadedImage = UIImage(data: data!) { 

    let markerImageView: UIImageView? = nil 

    markerImageView?.image = downloadedImage 
    print(markerImageView?.image) 
    markerImageView?.frame = CGRect(x: 0, y: 0, width: 50, height: 50) 

    markerImageView?.layer.borderWidth = 1.0 
    markerImageView?.layer.masksToBounds = false 
    markerImageView?.layer.borderColor = UIColor.white.cgColor 
    markerImageView?.layer.cornerRadius = (markerImageView?.frame.size.width)!/2 
    markerImageView?.clipsToBounds = true 

    let actualFinalImage = markerImageView?.image 

    marker.icon = actualFinalImage 

} 

我知道我从firebase获取图片,并且该部分正在工作。但是,我认为问题出在这个部分:let markerImageView: UIImageView? = nil我认为将它设置为与标记图标无冲突,这就是为什么这不起作用。但是,如果我拿出零部分,我得到一个错误,说我已经初始化之前不能编辑markerImageView。

任何帮助,将不胜感激!

回答

0

尝试引导以下 - Use the marker's icon property

以下代码段创建具有在icon属性设置为UIImage自定义图标的标记。该图标集中在英国伦敦。片段假定您的应用程序包含名为“house.png”的图像。

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) 
let london = GMSMarker(position: position) 
london.title = "London" 
london.icon = UIImage(named: "house") 
london.map = mapView 

对于一个更完整的实现自定义标记图像:

mapView.delegate = self 

let house = UIImage(named: "House")!.withRenderingMode(.alwaysTemplate) 
let markerView = UIImageView(image: house) 
markerView.tintColor = .red 
londonView = markerView 

let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) 
let marker = GMSMarker(position: position) 
marker.title = "London" 
marker.iconView = markerView 
marker.tracksViewChanges = true 
marker.map = mapView 
london = marker 

在相关的SO post

let marker = GMSMarker() 

// I have taken a pin image which is a custom image 
let markerImage = UIImage(named: "mapMarker")!.withRenderingMode(.alwaysTemplate) 

//creating a marker view 
let markerView = UIImageView(image: markerImage) 

//changing the tint color of the image 
markerView.tintColor = UIColor.red 

marker.position = CLLocationCoordinate2D(latitude: 28.7041, longitude: 77.1025) 

marker.iconView = markerView 
marker.title = "New Delhi" 
marker.snippet = "India" 
marker.map = mapView 

//comment this line if you don't wish to put a callout bubble 
mapView.selectedMarker = marker 

你会看到他是如何分配markerImage为UIImage要获取图像,使用markerview将图像设置为UIImageView。最后,拨打markerView作为marker.iconView value

希望这会有所帮助。