1

我通过创建 XIB 文件创建了带有 InfoWindow 的自定义标记。但是我也想在该标记上使用向下箭头,以便用户知道他们单击了哪个标记。

我想将infoWindow从标记上移一点..我已经写下了那个bu的代码,但它没有向上移动。

我的代码如下

————————------------

    googleMapView.delegate = self
    var visibleRegion : GMSVisibleRegion =  googleMapView.projection.visibleRegion()
    var bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.farRight)


    for Prop: Property in properties
    {

        var latStr = Prop.lat as NSString
        var latDbl : Double  = Double(latStr.floatValue)
        var langStr = Prop.lang as NSString
        var langDbl : Double = Double(langStr.floatValue)

        var marker = GMSMarker()


        let initialLocation = CLLocationCoordinate2DMake(latDbl, langDbl)
        let initialDirection = CLLocationDirection()

        let camera = GMSCameraPosition.cameraWithTarget(initialLocation, zoom: 11)

        googleMapView.camera = camera
        marker.position = CLLocationCoordinate2DMake(latDbl,langDbl)
        //println("latitude: \(latDbl)")
        //println("longitude: \(langDbl)")

        marker.appearAnimation = kGMSMarkerAnimationPop
        marker.icon = UIImage(named: "Map_Marker_Green")
        marker.title = Prop.buildingName as String
        marker.snippet = Prop.proCode as String
        marker.infoWindowAnchor = CGPointMake(0.44, 0.45);
        marker.map = googleMapView
        println("Snippet \(marker.snippet)")

    }

标记和信息窗口提示的代码—————————————————————————————————————————</p>

    func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {

        var infoWindow :CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("PropertyInfoWindow", owner: self.view, options: nil).first! as! CustomInfoWindow

        infoWindow.proCode = marker.snippet
        infoWindow.title.text = marker.title
        infoWindow.title.layer.cornerRadius = 10
        infoWindow.layer.cornerRadius = 10
        infoWindow.frame = CGRectMake(infoWindow.frame.minX,infoWindow.frame.minY-100,infoWindow.frame.width,infoWindow.frame.height)
        return infoWindow
    }



    func mapView(mapView: GMSMapView!, didTapInfoWindowOfMarker marker: GMSMarker!) {
        var prop: Property = returnPropObj(marker.snippet)
        println(prop.buildingName)
        dispatch_async(dispatch_get_main_queue())
        {
            let unitListingController = self.storyboard?.instantiateViewControllerWithIdentifier("UnitListing") as! UnitListingController
            unitListingController.property = prop
            self.showViewController(unitListingController as UIViewController, sender: unitListingController )
        }

    }

任何人都可以查看此代码并给我建议(如果有)?感谢帮助!

4

3 回答 3

0

区分用户选择的标记的建议是将标记不透明度设置为 0.5 或其他值,但是当用户选择标记时,调用一个更改的函数,marker.opacity = 1;并在选择另一个标记时将其恢复为 0.5。至于 infowindow,也许可以自定义它以具有指向标记的三角形。希望这能给你一些想法。

于 2015-07-07T16:18:38.707 回答
0
  • 您可以使用 markerInfoContent 委托方法返回适合默认框架内的视图

    func mapView(_ mapView: GMSMapView, markerInfoContents marker: GMSMarker) -> UIView? {
        let infoWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self, options: nil)?.first! as! CustomInfoWindow
        infoWindow.updateView(name: marker.title!, details: marker.snippet!, location: "\(marker.position.latitude), \(marker.position.longitude)")
        let view = UIView(frame: CGRect(x: 0, y: 0, width: 129, height: 61))
        view.addSubview(infoWindow)
        return view
    }
    
于 2017-03-01T05:29:08.407 回答
0

你只是做

    //This allows the info window to centre around the location where the marker is
    infoWindow.center = mapView.projection.point(for: location)
    //This moves the infowindow up from the marker
    infoWindow.center.y -= 150 
于 2017-04-14T16:41:16.567 回答