HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在IOS的Storyboard中添加GMSMapView大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
https://developers.google.com/maps/documentation/ios-sdk/utility/marker-clustering

我正在为地图聚类工作.在地图聚类中

private var mapView: GMsmapView!

用于mapView但找不到任何GMsmapView!在故事板连接.

从故事板我发现

@IBOutlet var mapView: MKMapView!

这就产生了问题.当我使用exampled谷歌地图时,它会抛出错误

这个类不是键值mapView的关键值编码兼容.

这里有完整的代码

import UIKit
import MapKit
import GooglePlaces
import GoogleMaps



// Point of Interest Item which implements the GMUClusterItem protocol.
class POIItem: NSObject,GMUClusterItem {
    var position: CLLOCATIOnCoordinate2D
    var name: String!

    init(position: CLLOCATIOnCoordinate2D,name: String) {
        self.position = position
        self.name = name
    }
}

let kClusterItemCount = 10000
let kCameraLatitude = -33.8
let kCameraLongitude = 151.2

class FirstViewController: UIViewController,GMUClusteRMANagerDelegate,GMsmapViewDelegate {



   // @IBOutlet var mapView: MKMapView!


    private var mapView: GMsmapView!



     private var clusteRMANager: GMUClusteRMANager!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set up the cluster manager with the supplied icon generator and
        // renderer.


        // Set up the cluster manager with default icon generator and renderer.
        let iconGenerator = GMUDefaultClusterIconGenerator()
        let algorithm = GMUNonHierarchicalDistanceBasedAlgorithm()
        let renderer = GMUDefaultClusterRenderer(mapView: mapView,clusterIconGenerator: iconGenerator)
        clusteRMANager = GMUClusteRMANager(map: mapView,algorithm: algorithm,renderer: renderer)

        // Generate and add random items to the cluster manager.
        generateClusterItems()

        // Call cluster() after items have been added to perform the clustering and rendering on map.
        clusteRMANager.cluster()

        // Register self to listen to both GMUClusteRMANagerDelegate and GMsmapViewDelegate events.
        clusteRMANager.setDelegate(self,mapDelegate: self)


    }

//    override func loadView() {
//        
//        // Create a GMSCameraPosition that tells the map to display the
//        // coordinate -33.86,151.20 at zoom level 6.
//        let camera = GMSCameraPosition.camera(withLatitude: -33.86,longitude: 151.20,zoom: 6.0)
//        let mapView = GMsmapView.map(withFrame: CGRect.zero,camera: camera)
//        view = mapView
//        
//        // Creates a marker in the center of the map.
//        let marker = GMsmarker()
//        marker.position = CLLOCATIOnCoordinate2D(latitude: -33.86,longitude: 151.20)
//        marker.title = "Sydney"
//        marker.snippet = "Australia"
//        marker.map = mapView
//        
//    }
//    

    // MARK: - GMUClusteRMANagerDelegate
    func clusteRMANager(clusteRMANager: GMUClusteRMANager,didTapCluster cluster: GMUCluster) {
        let newCamera = GMSCameraPosition.camera(withTarget: cluster.position,zoom: mapView.camera.zoom + 1)
        let update = GMSCameraupdate.setCamera(newCamera)
        mapView.moveCamera(updatE)
    }

    // MARK: - GMUMapViewDelegate
    func mapView(mapView: GMsmapView,didTapMarker marker: GMsmarker) -> Bool {
        if let poiItem = marker.userData as? POIItem {
            NSLog("Did tap marker for cluster item \(poiItem.Name)")
        } else {
            NSLog("Did tap a normal marker")
        }
        return false
    }

    // MARK: - Private
    /// Randomly generates cluster items within some extent of the camera and adds them to the
    /// cluster manager.
    private func generateClusterItems() {
        let extent = 0.2
        for index in 1...kClusterItemCount {
            let lat = kCameraLatitude + extent * randomScale()
            let lng = kCameraLongitude + extent * randomScale()
            let name = "Item \(indeX)"
            let item = POIItem(position: CLLOCATIOnCoordinate2DMake(lat,lng),name: Name)
            clusteRMANager.add(item)
        }
    }

    /// Returns a random value between -1.0 and 1.0.
    private func randomScale() -> Double {
        return Double(arc4random()) / Double(UINT32_MAX) * 2.0 - 1.0
    }
}

解决方法

先来看看UIView:

在UIViewController中添加UIView:

分配类GMsmap视图

现在创建GMsmapView的出口.

@IBOutlet var mapView: GMsmapView!

大佬总结

以上是大佬教程为你收集整理的如何在IOS的Storyboard中添加GMSMapView全部内容,希望文章能够帮你解决如何在IOS的Storyboard中添加GMSMapView所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。