开发者社区> 问答> 正文

将对象传递到Google Maps SDK中的自定义视图

当用户点击地图标记时,我将显示自定义视图(带有其类的笔尖)。当用户点击其中一个标记时,我还想从对象中显示所选对象的数据。我用单独的方法从同一数组创建标记。当用户点击标记时,如何获取数组中的元素(以显示其他数据)?还是有另一种方法可以基于按下的标记从数组中获取对象。除了基于lon和lat等的正则表达式之外?

展开
收起
游客ufivfoddcd53c 2020-01-04 17:07:34 1035 0
1 条回答
写回答
取消 提交回答
  • GMSMapViewDelegate具有委托功能,可让您将customView作为信息窗口返回。

    optional public func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView?
    
    

    您必须继承GSMarker的子类,后者会将模型放入init中。

    class MapItem:GMSMarker {
        var model: Model!  //your data model
        init(data: Model) {
            super.init()
            // pass cordinate
            self.position = CLLocationCoordinate2D(latitude: data.latitude!, longitude: data.longitude!) 
            // pass Model
            self.model = data 
        }
    }
    
    func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
        // Wrap GSMarker to your custom marker which is MapItem here
        let customMarker = marker as! MapItem 
          // pass your model to CustomView(marker info window) in init 
        let customView = CustomView(markerModel: customMarker.model)
        return customView
    }
    
    2020-01-04 17:08:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载