【问题标题】:Custom marker on google map as per below image谷歌地图上的自定义标记如下图
【发布时间】:2019-12-01 07:45:29
【问题描述】:

我想按照以下添加自定义标记。我有在谷歌地图上标记的方法,但我想将用户图像放在标记针上,如下所示。 我有透明标记图像,我想从 url 加载用户图像。所以图像必须是动态的。所以我不能放置静态标记。

//Add Marker
    func dropMarker(_ location : CLLocation, _ isHotelLocation: Bool = false,_ memberModel : membersModel? = nil){

        let marker = GMSMarker()
        let position =  self.checkIfMutlipleCoordinates(latitude: Float(location.coordinate.latitude), longitude: Float(location.coordinate.longitude))
        marker.position = position

        if isHotelLocation == false{
            if let url = URL.init(string: memberModel!.avatar_url ?? ""){
                let imageView = UIImageView(image: UIImage.init(named: "locationPin"))
                imageView.sd_setImage(with: url, placeholderImage: UIImage.init(named: "locationPin"))
                marker.iconView = imageView
            }else{
                marker.icon = UIImage(named : "LocationPlaceholderPin")
            }

            marker.userData = memberModel
        }else{
            marker.icon = UIImage(named : "hotelMarker")
            hotelLocationMarker = marker
        }

        marker.map = mapView
        arrMarkers.append(marker)
    }

【问题讨论】:

  • 有什么问题?
  • 我想根据我的图像将用户的图像添加到标记上。我想实现它。但我没有做到这一点
  • 将用户图像作为子视图添加到您的标记图像,然后将其设置为您的标记
  • 用户的图片是动态的,它会是一个服务器的url。那么我该如何添加它。你能举个例子吗?

标签: ios swift google-maps geolocation google-maps-markers


【解决方案1】:

使用此扩展从服务器下载图像:

extension UIImageView {
    func downloaded(from url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) {  // for swift 4.2 syntax just use ===> mode: UIView.ContentMode
        contentMode = mode
        URLSession.shared.dataTask(with: url) { data, response, error in
            guard
                let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
                let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
                let data = data, error == nil,
                let image = UIImage(data: data)
                else { return }
            DispatchQueue.main.async() {
                self.image = image
            }
        }.resume()
    }
    func downloaded(from link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) {  // for swift 4.2 syntax just use ===> mode: UIView.ContentMode
        guard let url = URL(string: link) else { return }
        downloaded(from: url, contentMode: mode)
    }
}

然后将图像作为子视图添加到标记图像:

var userImage = UIImageView()
userImage.downloaded(from: "user image url")
let userMarkerImage = UIImageView(named: "your marker placeholder")
userMarkerImage.addsubView(userImage)

然后将图像设置为标记:

marker.icon = userMarkerImage

注意

你应该在添加为子视图之前设置图像的框架

【讨论】:

  • 不工作。只有下载的图像视图显示为标记。引脚未显示。我想在 pin 上下载图片
  • @JitendraModi 您应该以编程方式创建该图像
  • Ok 将尝试创建动态图像
猜你喜欢
  • 2018-11-15
  • 1970-01-01
  • 2013-08-21
  • 2013-08-11
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多