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 版本较旧?