【问题标题】:How to create multiple markers in GoogleMaps with SwiftUI?如何使用 SwiftUI 在 GoogleMaps 中创建多个标记?
【发布时间】:2020-09-29 19:14:22
【问题描述】:

我需要在我的 MapView 中添加多个标记。如何使用 swiftui 在同一个地图视图中添加多个标记?

这是我的代码:

import SwiftUI
import UIKit
import GoogleMaps

struct MapView: UIViewRepresentable {
    let coordinate: CLLocationCoordinate2D?
    let marker : GMSMarker = GMSMarker()

    func makeUIView(context: Self.Context) -> GMSMapView {
        let camera = GMSCameraPosition.camera(withLatitude: coordinate.latitude, longitude: coordinate.longitude, zoom: 6.0)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        return mapView
    }

    func updateUIView(_ mapView: GMSMapView, context: Self.Context) {
        marker.position = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude)
        marker.title = "XYZ"
        marker.snippet = "ABCD"
        marker.map = mapView
    }

}

【问题讨论】:

    标签: swiftui google-maps-sdk-ios


    【解决方案1】:

    这是我的示例,

    struct MapView: UIViewRepresentable {
        let coordinate: CLLocationCoordinate2D
        let cities = [
            [
                "name": "Yangon",
                "lat": 16.8409,
                "long": 96.1735
            ],
            [
                "name": "Mandalay",
                "lat": 21.9588,
                "long": 96.0891
            ]
        ]
    
        func makeUIView(context: Self.Context) -> GMSMapView {
            let camera = GMSCameraPosition.camera(withLatitude: coordinate.latitude, longitude: coordinate.longitude, zoom: 6.0)
            let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
            return mapView
        }
    
        func updateUIView(_ mapView: GMSMapView, context: Self.Context) {
            for city in cities {
                let marker : GMSMarker = GMSMarker()
                marker.position = CLLocationCoordinate2D(latitude: city["lat"] as! CLLocationDegrees, longitude: city["long"] as! CLLocationDegrees)
                marker.title = city["name"] as? String
                marker.snippet = "Welcome to \(city["name"] as! String)"
                marker.map = mapView
            }
        }
    }
    

    【讨论】:

    • 您好,谢谢您的回答。我应该在相机GMSCameraPosition.camera 中提及哪个纬度和经度?
    • 这是你自己的想法
    • 谢谢你,现在我明白了。给定“GMSCameraPosition.camera”中的一个公共位置,现在它可以工作了
    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 2020-09-03
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2022-10-21
    相关资源
    最近更新 更多