【问题标题】:No business POIs shown on GMSMapView, didTapPOIWithPlaceID not calledGMSMapView 上未显示业务 POI,未调用 didTapPOIWithPlaceID
【发布时间】:2017-02-07 16:59:13
【问题描述】:

我正在显示GMSMapView,但无法显示餐厅、酒店、商店等商业场所。根据 docs 使用 mapType kGMSTypeNormal 应该提供该请求。

另外,地图类型为kGMSTypeNormal时,地图上默认出现业务POI

很遗憾,它只显示“官方”兴趣点,如公园、景点、医院等。

此外,我希望当我点击这些“官方” POI 之一时会调用 GMSMapViewDelegate 成员函数 mapView:didTapPOIWithPlaceID:name:location:,但无论我点击哪里,我都不会调用该函数。我暂时尝试了相应的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 给了我一个编译器错误:

“GMSMapView”类型的值没有成员“mapStyle”

【问题讨论】:

    标签: swift google-places-api google-maps-sdk-ios


    【解决方案1】:

    mapStyle 和业务 POI 是在 2016 年 9 月 22 日发布的 2.1 版中添加的。请参见此处:

    https://developers.google.com/maps/documentation/ios-sdk/releases#version_21_-_september_22_2016

    也许您有旧版本的 SDK?

    【讨论】:

    • 这是正确的答案。这也是我的怀疑,但由于我是从头开始安装的,我不敢相信。事实证明,如果您在您的 pod install 之后立即执行 pod update,它不会受到伤害(有时可能非常有用)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多