ios - 在谷歌地图中设置多个标记

标签 ios objective-c swift google-maps

我有一个国家列表(latitude-longitude),并为列表中的每个国家在我的 map 中设置一个标记。我使用 Google Maps SDK

当我仅在当前位置尝试此操作时,显示标记。在列表中的其他元素中没有出现标记。

最佳答案

每个 GMSMarker 都有一个 map 属性,即它需要显示的 map 。

这是一个有用的类:

class MyCustomMap: GMSMapView {

var markers: [Marker]                   = [] // array of custom marker to be shown in the map
var defaultZoom: Float                  = 10 //default zoom level of the map

override func awakeFromNib() {
    super.awakeFromNib()

    settings.rotateGestures = true
    isMyLocationEnabled = true
    settings.setAllGesturesEnabled(true)

}

func removeAllMarkers() {

    for eachMarker in markers {
        eachMarker.map = nil
    }

}

/// Sets the zoom level of the map to show all the marker at once with in the screen
func showAllMarkers(for markers: [Marker]) {

    var bounds = GMSCoordinateBounds()
    for marker in markers {
        bounds = bounds.includingCoordinate(marker.position)
    }
    let update = GMSCameraUpdate.fit(bounds, withPadding: 100.0)
    animate(with: update)

}

// MARK: - Private

func createMarker(with marker: Marker) {
    markers.append(marker)
    marker.map = self
}

func createMarkers(with markers: [Marker]) {

    for eachMarker in markers {
       createMarker(with: eachMarker)
    }

}
}

这里的marker是我自定义的marker,它继承了GMSMarker

class Marker : GMSMarker {

 }

此外,如果您在获取标记后尝试在当前位置显示标记,请使用 CLLocationCoordinate2D 纬度和经度创建一个新标记并将其添加到 map 中。

marker.map = your_mapview

关于ios - 在谷歌地图中设置多个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53938948/

相关文章:

ios - 限制服务器只响应 iOS 应用程序发出的 HTTP 请求 - 没有用户名和密码

ios - 处理具有底部约束的键盘

swift - 如何设置 UIAlert 显示大量信息?

objective-c - 视频方向 UIImagePickerController

php - 使用 php 的适用于 iOS 的苹果推送通知和适用于 Android 的谷歌云消息传递?

ios - 从模型中调用 CLLocationManager 及其委托(delegate)

ios - 在 TabViewController 和 NavigationController 之间导航

ios - 在 navigationController 中呈现 modalviewController 后,推送和弹出动画会损坏

ios - 将 3D SceneKit 节点位置映射到 2D 坐标 - projectPoint 不起作用

ios - Xcode,在哪里分配segue标识符