IOS谷歌地图sdk中的自定义信息窗口

时间:2014-09-01 06:13:13

标签: ios xcode google-maps maps callout

作为一名新的IOS开发人员,我真的很难找到基本工作的东西。

我需要在Google地图sdk for ios上点击标记时显示这种自定义信息窗口。

enter image description here

任何帮助都将不胜感激。

我已经看过第三方组件,但即使有了它们,我也无法显示它。始终有标题,片段,左图像和右图像部分。真正的问题是如何在窗口中获得金星评级,旁边有文字。

4 个答案:

答案 0 :(得分:4)

我在GoogleMapsSdk for iOS中遇到了同样的信息窗口定制问题很多天,感到很沮丧做到了我自己!

清洁,完全可定制&您可以在Github Right here

上找到带有自定义操作代码的自己的UIControl

快乐编码:)

答案 1 :(得分:3)

根据需要制作Xib ...设置文字和图像

设置委托 GMSMapViewDelegate

-(UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker{

    CustomInfoWindow *infoWindow=[[[NSBundle mainBundle] loadNibNamed:@"InfoWindow" owner:self options:nil] objectAtIndex:0];  
     return infoWindow;

}

https://www.youtube.com/watch?v=ILiBXYscsyY 寻求更多帮助 看到这个视频..由谷歌开发

答案 2 :(得分:1)

最终使用了SMCalloutView @ https://github.com/nfarina/calloutview

答案 3 :(得分:1)

Swift 3.0解决方案

Google Map CustomInfoWindow

//empty the default infowindow
    func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
        return UIView()
    }

    // reset custom infowindow whenever marker is tapped
    func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {

        customInfoView.removeFromSuperview()
    //    customInfoView.button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
        self.view.addSubview(customInfoView)

        // Remember to return false
        // so marker event is still handled by delegate
        return false
    }

    // let the custom infowindow follows the camera
    func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
        if (locationMarker != nil){
            let location = locationMarker.position
            customInfoView.center = mapView.projection.point(for: location)
        }
    }

    // take care of the close event
    func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
        customInfoView.removeFromSuperview()
    }