3

作为 IOS 开发人员的新手,我真的很难获得一些基本的工作。

我需要在 google maps sdk for ios 中单击标记后显示这种自定义信息窗口。

在此处输入图像描述

任何帮助,将不胜感激。

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

4

4 回答 4

4

随心所欲制作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 如需更多帮助,请查看此视频。由 google 上传

于 2014-09-01T08:41:35.163 回答
4

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

可以在 Github 上找到带有自定义操作代码的干净、完全可定制和自己的 UIControls 就在这里

快乐编码:)

于 2016-03-15T11:03:50.440 回答
2

Swift 3.0 解决方案

谷歌地图自定义信息窗口

//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()
    }
于 2016-11-18T15:34:29.790 回答
1

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

于 2014-09-02T20:49:02.080 回答