视图左上角的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 
+0

HEL lo Raksha, 谢谢你的回答,但我已经检查过谷歌文档。 您显示的代码无助于解决问题:显示视图时,将相机对准标记。 如果我想仅使用Google Map视图创建视图,您的代码将对我有所帮助。 在我的情况下,我想在UITableView中添加一个(我已经成功做到了) – steed

+0

@steed您可以在表格单元格的视图中添加mapview。 – Rex

+0

你好,我只是发现问题(标记不居中,当视图出现)只发生在使用iPhone 6/6s/7 plus时。我正在使用自动布局,并且它在iPhone 5/5s/6/6s/7上正常工作。 有什么想法? – steed