IOS - 优化谷歌地图标记

时间:2018-04-03 12:45:07

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

我正在研究iOS中的谷歌地图,里面有很多标记(spprox.10到20)。我尝试优化我的代码。

为了创建标记,我们调用createMarker()方法。

上一个代码:

func createMarker(){
    //Creating UIImageView() object for each marker
    let backgroundImg = UIImageView()
    backgroundImg.image = UIImage(named: "JobMarkerInvitedBg")
}

优化代码:

let uiImageView = UIImageView()
func createMarker(){
    //Reusing UIImageView() object
    let backgroundImg = uiImageView
    backgroundImg.image = UIImage(named: "JobMarkerInvitedBg")
}

在这里,我只创建了一次imageview对象并重复使用所有标记,而不是一次又一次地创建它。这会对内存或CPU消耗产生显着影响吗?

2 个答案:

答案 0 :(得分:2)

重用UIImage的相同实例,并可能将它们存储为某个地方的全局属性,如下所示。您不应该重用相同的UIImageView实例。预加载图像并使用UIImage的相同实例将为您带来最大的性能优势。 enum使用ImageStore,因为无法实例化该枚举。

enum ImageStore {
    static let jobMarker = UIImage(named: "JobMarkerInvitedBg")
}

class MarkCreator {

    func createMarkerView() -> UIImageView {
        let imageView = UIImageView()
        imageView.image = ImageStore.jobMarker
        return imageView
    }
}

答案 1 :(得分:1)

  

如果要使用相同的图像创建多个标记,请使用相同的标记   每个标记的UIImage实例。这有助于改善   显示许多标记时应用程序的性能。

     

https://developers.google.com/maps/documentation/ios-sdk/marker

您想要使用UIImage的相同实例。是的,调用相同的实例是Google希望您放置多个标记的方式。