菜鸟教程小白 发表于 2022-12-11 19:49:49

iOS Google map 以编程方式选择注释 [Swift]


                                            <p><p>我有一个方法可以将 <strong>标记</strong> 放置到我有自定义标注的 map 上。问题是用户需要单击此标记才能将其显示出来。是否可以从 <strong>Google Map 的 API</strong> 调用一个方法,该方法可以选择 <strong>注释</strong> 并<strong>以编程方式</strong>调出标注?</p>

<p>我知道对于 Applemap ,Objective C 中有 <code>;</code> 和 <code>self.mapView.selectAnnotation(selectedAnnotation, animated: true)</code>swift </p>

<p>我已阅读 <a href="https://stackoverflow.com/questions/15758068/how-to-select-a-map-pin-programmatically" rel="noreferrer noopener nofollow">How to select a map pin programmatically</a>但这似乎对 Googlemap 没有任何帮助。</p>

<p>仅供引用 - 这是一个 <strong>Swift</strong> 项目</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您需要使用 <code>GMSMapView</code> <code>selectedMarker</code> 属性,还需要将相机移动到新的 selectedMarker 位置</p>

<p><strong>完整代码示例</strong></p>

<pre><code>import UIKit
import GoogleMaps

struct MarkerStruct {
    let name: String
    let lat: CLLocationDegrees
    let long: CLLocationDegrees
}

class TapViewController: UIViewController, GMSMapViewDelegate {
    let markers = [
      MarkerStruct(name: &#34;Food Hut 1&#34;, lat: 52.649030, long: 1.174155),
      MarkerStruct(name: &#34;Foot Hut 2&#34;, lat: 35.654154, long: 1.174185),
      MarkerStruct(name: &#34;Foot Hut 3&#34;, lat: 22.654154, long: 1.174185),
      MarkerStruct(name: &#34;Foot Hut 4&#34;, lat: 50.654154, long: 1.174185),
      ]

    var mapView : GMSMapView? = nil

    var mapMarkers : = []
    var timer : Timer? = nil

    override func viewDidLoad() {
      super.viewDidLoad()

      let camera = GMSCameraPosition.camera(withLatitude: 52.649030, longitude: 1.174155, zoom: 14)
      mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

      mapView?.delegate = self
      self.view = mapView

      for marker in markers {
            let position = CLLocationCoordinate2D(latitude: marker.lat, longitude: marker.long)
            let locationmarker = GMSMarker(position: position)
            locationmarker.title = marker.name
            locationmarker.map = mapView
            mapMarkers.append(locationmarker)
      }

      timer = Timer.scheduledTimer(timeInterval: 15, target: self, selector:#selector(self.selectRandomMarker), userInfo: nil, repeats: true)

    }

    //Selecting random marker
    func selectRandomMarker(){
      let randomIndex = arc4random_uniform(UInt32(self.mapMarkers.count))
      self.mapView?.selectedMarker = self.mapMarkers
      self.mapView?.animate(toLocation: (self.mapView?.selectedMarker!.position)!)
    }

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS Googlemap 以编程方式选择注释 ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/49156832/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/49156832/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS Google map 以编程方式选择注释 [Swift]