Marker

Make a standard marker
 let marker = GMSMarker()
        marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
        marker.title = "Sydney"
        marker.snippet = "Australia"
        marker.map = mapView
Change marker color
marker.icon = GMSMarker.markerImage(with: .black)
Custom marker icon
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
Custom marker iconView

ViewController.swift

...
var london:GMSMarker?
var londonView:UIImageView?
...  
viewDidLoad(){
    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   
}

// 每次滑动地图,或者地图中心有变化时,标出地图中心的位置
func mapView(_ mapView:GMSMapView, idleAt position:GMSCameraPosition) {
    UIView.animate(withDuration:5.0, animations: { () -> Void in
      self.londonView?.tintColor = .blue
      }, completion: {(finished) in
        // Stop tracking view changes to allow CPU to idle.
        self.london?.tracksViewChanges = false
    })
  }

使用iconView时,请注意以下几点:

  • tracksViewChanges设为YES时,UIView可能会请求资源,这会导致电池消耗增加。 相比之下,单帧UIImage为静态,并且不需要重新渲染。

  • 如果您的屏幕上有很多标记,每个标记都有自己的UIView,并且所有标记都在同时跟踪更改,某些设备在渲染地图时可能会比较吃力。

  • iconView不会响应用户交互,因为它只是一张视图快照。

  • 无论clipsToBounds的实际值为何,视图都展现前者设为YES时的行为。 您可以应用作用于边界之外的变换,但是您绘制的对象必须位于对象的边界内。 所有变换/转换都会得到监视并加以应用。 简言之,子视图必须包含在视图中。

要确定何时设置tracksViewChanges属性,您应权衡性能注意事项与让标记自动重绘的优势。

例如:

  • 如果您要进行一系列更改,则可以先将属性设为YES,然后再改回NO

  • 如果某个动画正在运行或者内容正在异步加载,您应将属性一直设为YES,直至操作完成。

Copyright © Xianbin Lin 2017 all right reserved,powered by GitbookModified time: 2017-07-23 18:40:08

results matching ""

    No results matching ""