视图左上角的GMSMarker图标(iOS)
问题描述:
我想创建一个包含GMSMapView的UITableViewCell,并在当前位置的中心有一个GMSMarker。视图左上角的GMSMarker图标(iOS)
问题是标记总是出现在当前位置的左上角,我不知道如何解决问题。
我试图按照下列步骤操作:Implementing a Google Map with UItableviewCell
这里是cellForRowAt我的代码:
let locationCell = tableView.dequeueReusableCell(withIdentifier: "activityLocationCell") as! ActivityLocationCell
let latitude = CLLocationDegrees(activity.coordinates![0])
let longitude = CLLocationDegrees(activity.coordinates![1])
let position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
locationCell.googleMapView.camera = GMSCameraPosition.camera(withTarget: position, zoom: 15)
let marker = GMSMarker(position: position)
marker.groundAnchor = CGPoint(x: 0.5, y: 0.5)
marker.map = locationCell.googleMapView
return locationCell
这里是我的问题的截图: marker is at the top left corner of the map
答
要添加标记,请去Here
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10)
let marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = mapView
更改标记颜色
marker.icon = GMSMarker.markerImage(with: .black)
自定义标记图像
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
使用标记的ICONVIEW财产
import UIKit
import GoogleMaps
class ViewController: UIViewController, GMSMapViewDelegate {
var mapView: GMSMapView!
var london: GMSMarker?
var londonView: UIImageView?
override func loadView() {
let camera = GMSCameraPosition.camera(withLatitude: 51.5,
longitude: -0.127,
zoom: 14)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
view = mapView
mapView.delegate = self
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
})
}
更改信息窗口的位置
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.snippet = "Population: 8,174,100"
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5)
london.icon = UIImage(named: "house")
london.map = mapView
HEL lo Raksha, 谢谢你的回答,但我已经检查过谷歌文档。 您显示的代码无助于解决问题:显示视图时,将相机对准标记。 如果我想仅使用Google Map视图创建视图,您的代码将对我有所帮助。 在我的情况下,我想在UITableView中添加一个(我已经成功做到了) – steed
@steed您可以在表格单元格的视图中添加mapview。 – Rex
你好,我只是发现问题(标记不居中,当视图出现)只发生在使用iPhone 6/6s/7 plus时。我正在使用自动布局,并且它在iPhone 5/5s/6/6s/7上正常工作。 有什么想法? – steed