谷歌地图上的自定义标记如下图

Posted

技术标签:

【中文标题】谷歌地图上的自定义标记如下图【英文标题】: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。那么我该如何添加它。你能举个例子吗? 【参考方案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 将尝试创建动态图像

以上是关于谷歌地图上的自定义标记如下图的主要内容,如果未能解决你的问题,请参考以下文章

如何更改谷歌地图标记上的图标

带有矢量资产图标的 android 谷歌地图中的自定义标记

在颤动的谷歌地图的自定义标记中添加数字? [关闭]

用于文本叠加的自定义标记谷歌地图街景 Xcode

如何在谷歌地图中创建一个带有气泡聊天背景的自定义标记,以及像调情地图这样的图像右上角的数字?

谷歌地图上的自定义缩放级别