IOS - 优化 google 地图标记
IOS - Optimizing google maps markers
我正在 iOS 中制作 google 地图,其中有很多标记(大约 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 消耗产生重大影响吗?
If you are creating several markers with the same image, use the same
instance of UIImage for each of the markers. This helps improve the
performance of your application when displaying many markers.
https://developers.google.com/maps/documentation/ios-sdk/marker
您想使用 UIImage
的同一个实例。是的,调用同一个实例是 Google 希望您放置多个标记的方式。
重复使用 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
}
}
我正在 iOS 中制作 google 地图,其中有很多标记(大约 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 消耗产生重大影响吗?
If you are creating several markers with the same image, use the same instance of UIImage for each of the markers. This helps improve the performance of your application when displaying many markers.
https://developers.google.com/maps/documentation/ios-sdk/marker
您想使用 UIImage
的同一个实例。是的,调用同一个实例是 Google 希望您放置多个标记的方式。
重复使用 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
}
}