GMSMapView 上未显示业务 POI,未调用 didTapPOIWithPlaceID
No business POIs shown on GMSMapView, didTapPOIWithPlaceID not called
我正在显示 GMSMapView
,但无法显示餐厅、酒店、商店等营业场所。根据 docs 使用 mapType kGMSTypeNormal
应该提供该请求。
In addition, business POIs appear by default on the map when the map type is kGMSTypeNormal
不幸的是,它只显示 "official" 个 POI,如公园、景点、医院等。
此外,我预计 GMSMapViewDelegate
成员函数 mapView:didTapPOIWithPlaceID:name:location:
在我点击其中一个 "official" 兴趣点时被调用,但无论我点击哪里,我都没有获取要调用的函数。我暂时尝试了相应的 mapView:didTapAtCoordinate:
只是为了确保我正确设置了委托并且它工作得很好。
这是我的代码:
import UIKit
import GoogleMaps
class PoiGoogleMapVC: UIViewController, UITextFieldDelegate, CLLocationManagerDelegate, GMSMapViewDelegate {
@IBOutlet weak var mainMap: GMSMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
mainMap.delegate = self
locationManager.delegate = self
let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: 48.857165, longitude: 2.354613, zoom: 8.0)
self.mainMap.mapType = kGMSTypeNormal
self.mainMap.camera = camera
locationManager.requestWhenInUseAuthorization()
}
func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D) {
print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)")
}
}
什么可能是解决方案的提示,但在这一点上让我感到困惑的是,根据 api doc GMSMapView
有一个 属性 称为 mapStyle
.当我尝试访问此 属性 Xcode 时,出现编译器错误:
Value of type 'GMSMapView' has no member 'mapStyle'
2016 年 9 月 22 日发布的 2.1 版中添加了 mapStyle
和商业 POI。参见此处:
https://developers.google.com/maps/documentation/ios-sdk/releases#version_21_-_september_22_2016
也许您的 SDK 版本较旧?
我正在显示 GMSMapView
,但无法显示餐厅、酒店、商店等营业场所。根据 docs 使用 mapType kGMSTypeNormal
应该提供该请求。
In addition, business POIs appear by default on the map when the map type is kGMSTypeNormal
不幸的是,它只显示 "official" 个 POI,如公园、景点、医院等。
此外,我预计 GMSMapViewDelegate
成员函数 mapView:didTapPOIWithPlaceID:name:location:
在我点击其中一个 "official" 兴趣点时被调用,但无论我点击哪里,我都没有获取要调用的函数。我暂时尝试了相应的 mapView:didTapAtCoordinate:
只是为了确保我正确设置了委托并且它工作得很好。
这是我的代码:
import UIKit
import GoogleMaps
class PoiGoogleMapVC: UIViewController, UITextFieldDelegate, CLLocationManagerDelegate, GMSMapViewDelegate {
@IBOutlet weak var mainMap: GMSMapView!
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
mainMap.delegate = self
locationManager.delegate = self
let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: 48.857165, longitude: 2.354613, zoom: 8.0)
self.mainMap.mapType = kGMSTypeNormal
self.mainMap.camera = camera
locationManager.requestWhenInUseAuthorization()
}
func mapView(_ mapView: GMSMapView, didTapPOIWithPlaceID placeID: String, name: String, location: CLLocationCoordinate2D) {
print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)")
}
}
什么可能是解决方案的提示,但在这一点上让我感到困惑的是,根据 api doc GMSMapView
有一个 属性 称为 mapStyle
.当我尝试访问此 属性 Xcode 时,出现编译器错误:
Value of type 'GMSMapView' has no member 'mapStyle'
2016 年 9 月 22 日发布的 2.1 版中添加了 mapStyle
和商业 POI。参见此处:
https://developers.google.com/maps/documentation/ios-sdk/releases#version_21_-_september_22_2016
也许您的 SDK 版本较旧?