Swift Google 地图代表不工作
Swift Google map delegates are not working
我有一个包含一些 google 地图函数的视图,但由于某些奇怪的原因,"info window tapped " 和 "marker did tapped" 没有执行任何操作。我不确定我错过了什么。我在几个不同的文件中有其他扩展名,但我认为这不会导致任何问题。
import UIKit
import Firebase
import FirebaseDatabase
import FirebaseAuth
import CoreLocation
import GoogleMaps
import Font_Awesome_Swift
class DasboardVC: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
//UnwindSegue
@IBAction func unwindSegueDashboard(segue:UIStoryboardSegue){}
//var sidebar items
@IBOutlet weak var mapView: GMSMapView!
@IBOutlet weak var addPhotoLabel: UILabel!
@IBOutlet weak var showSideBar: UIButton!
@IBOutlet weak var hideMenuIcon: UIButton!
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var editProfileButon: UIButton!
@IBOutlet weak var message: UIButton!
@IBOutlet weak var settings: UIButton!
@IBOutlet weak var logout: UIButton!
@IBOutlet weak var sidebarView: UIView!
@IBOutlet weak var activityButton: UIButton!
@IBOutlet weak var jobRequestSwitch: UISwitch!
@IBOutlet weak var topBar: UIView!
@IBOutlet weak var removePhoto: UIButton!
let profileImageController = ProfileImageVC()
let photoController = ProfilePicClass()
//MapView Vars
var locationManager = CLLocationManager()
var didFindMyLocation = false
var locationMarker: GMSMarker!
override func viewWillAppear(animated: Bool) {
sidebarView.hidden = true
removePhoto.hidden = true
topBar.backgroundColor = main()
hideNavBar()
sideBarMenuButton()
// sidebarProfileImage()
photoController.profileImage(profileImage, noImageLabel: addPhotoLabel)
}
override func viewWillDisappear(animated: Bool) {
showNavBar()
viewloadedMap()
}
override func viewDidLoad() {
mapInset()
mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil)
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
let ihelprCoordinate:CLLocationCoordinate2D = CLLocationCoordinate2DMake(37.332052, -122.031088)
ihelprLocation(ihelprCoordinate)
}
func mapView(mapView: GMSMapView, didTapInfoWindowOfMarker marker: GMSMarker) {
print("infoWindowTapped")
}
func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
print("markerTapped")
return true
}
}
尝试在 viewDidLoad()
方法中添加 mapView.delegate = self
对于swift:
导入 UIKit
导入 GoogleMaps
class DemoViewController: UIViewController,
GMSMapViewDelegate {
}
创建 GMSMapView 后,您可以将其委托设置为您的视图控制器。 GMSMapViewDelegate 仅提供可选方法。要监听任何特定事件,您必须实现相关方法。
override func loadView() {
let camera = GMSCameraPosition.camera(withLatitude: 1.285,
longitude: 103.848,
zoom: 12)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.delegate = self
self.view = mapView
}
// 标记:GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
print("You tapped at \(coordinate.latitude), \(coordinate.longitude)")
}
我有一个包含一些 google 地图函数的视图,但由于某些奇怪的原因,"info window tapped " 和 "marker did tapped" 没有执行任何操作。我不确定我错过了什么。我在几个不同的文件中有其他扩展名,但我认为这不会导致任何问题。
import UIKit
import Firebase
import FirebaseDatabase
import FirebaseAuth
import CoreLocation
import GoogleMaps
import Font_Awesome_Swift
class DasboardVC: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
//UnwindSegue
@IBAction func unwindSegueDashboard(segue:UIStoryboardSegue){}
//var sidebar items
@IBOutlet weak var mapView: GMSMapView!
@IBOutlet weak var addPhotoLabel: UILabel!
@IBOutlet weak var showSideBar: UIButton!
@IBOutlet weak var hideMenuIcon: UIButton!
@IBOutlet weak var profileImage: UIImageView!
@IBOutlet weak var editProfileButon: UIButton!
@IBOutlet weak var message: UIButton!
@IBOutlet weak var settings: UIButton!
@IBOutlet weak var logout: UIButton!
@IBOutlet weak var sidebarView: UIView!
@IBOutlet weak var activityButton: UIButton!
@IBOutlet weak var jobRequestSwitch: UISwitch!
@IBOutlet weak var topBar: UIView!
@IBOutlet weak var removePhoto: UIButton!
let profileImageController = ProfileImageVC()
let photoController = ProfilePicClass()
//MapView Vars
var locationManager = CLLocationManager()
var didFindMyLocation = false
var locationMarker: GMSMarker!
override func viewWillAppear(animated: Bool) {
sidebarView.hidden = true
removePhoto.hidden = true
topBar.backgroundColor = main()
hideNavBar()
sideBarMenuButton()
// sidebarProfileImage()
photoController.profileImage(profileImage, noImageLabel: addPhotoLabel)
}
override func viewWillDisappear(animated: Bool) {
showNavBar()
viewloadedMap()
}
override func viewDidLoad() {
mapInset()
mapView.addObserver(self, forKeyPath: "myLocation", options: NSKeyValueObservingOptions.New, context: nil)
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
let ihelprCoordinate:CLLocationCoordinate2D = CLLocationCoordinate2DMake(37.332052, -122.031088)
ihelprLocation(ihelprCoordinate)
}
func mapView(mapView: GMSMapView, didTapInfoWindowOfMarker marker: GMSMarker) {
print("infoWindowTapped")
}
func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
print("markerTapped")
return true
}
}
尝试在 viewDidLoad()
方法中添加 mapView.delegate = self
对于swift: 导入 UIKit 导入 GoogleMaps
class DemoViewController: UIViewController,
GMSMapViewDelegate {
}
创建 GMSMapView 后,您可以将其委托设置为您的视图控制器。 GMSMapViewDelegate 仅提供可选方法。要监听任何特定事件,您必须实现相关方法。
override func loadView() {
let camera = GMSCameraPosition.camera(withLatitude: 1.285,
longitude: 103.848,
zoom: 12)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.delegate = self
self.view = mapView
}
// 标记:GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
print("You tapped at \(coordinate.latitude), \(coordinate.longitude)")
}