如何使用 swift 在 google 地图中更改我的位置按钮的位置

How to change location of my location button in google maps using swift

我在我的项目中使用 google 地图 我想显示我的位置按钮 我应该怎么做 swift

您可以通过设置地图视图的内边距来更改 MapControls 的位置。

 let mapView = GMSMapView()

 mapView.isMyLocationEnabled = true
 mapView.settings.myLocationButton = true

 mapView.padding = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 50)

它将更改我的位置控件的填充。从底部 50px 到右侧 50px

参考下面的屏幕截图,它从底部和右侧添加了 50px 的填充。

与 Subramanian 一样,这非常有效:

mapView.padding = UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0)

如果您的应用程序中有导航栏,这是完美的。

swift4 的更新:仅更改我的位置按钮的位置

for object in self.mapView.subviews{
            if(object.theClassName == "GMSUISettingsPaddingView"){
                for view in object.subviews{
                    if(view.theClassName == "GMSUISettingsView"){
                        for btn in view.subviews{
                            if(btn.theClassName == "GMSx_QTMButton"){
                                var frame = btn.frame
                                frame.origin.y = frame.origin.y - 100
                                btn.frame = frame

                            }
                        }
                    }
                }
            }
        }

    public extension NSObject {
    public var theClassName: String {
        return NSStringFromClass(type(of: self))
    }
}

这是我的 Google Maps SDK 5.1.0 功能,因为按钮的 class 已重命名为 'GMSx_MDCFloatingButton',以防有人需要更新方法。

另外,根据您的实现,您可能希望在 viewDidAppear() 上调用它。

func moveLocationButton(){
        for object in self.googleMapsView!.subviews{
            if(object.thisClassName == "GMSUISettingsPaddingView"){
                for view in object.subviews{
                    if(view.thisClassName == "GMSUISettingsView"){
                        for btn in view.subviews{
                            if(btn.theClassName == "GMSx_MDCFloatingButton"){
                                var frame = btn.frame
                                frame.origin.x = frame.origin.x - 50
                                frame.origin.y = frame.origin.y - 150
                                btn.frame = frame
                                
                            }
                        }
                    }
                }
            }
        }
    }

    public extension NSObject {
    var thisClassName: String {
        return NSStringFromClass(type(of: self))
       }
    }

使用此函数并在 viewDidLayoutSubviews()

处调用
func changeLocationBtnFrame(){
    self.mapView.settings.myLocationButton = true
    for obj in self.mapView.subviews{
        if String(describing: obj.classForCoder) == "GMSUISettingsPaddingView"{
            for viw in obj.subviews{
                if String(describing: viw.classForCoder) == "GMSUISettingsView"{
                    for btn in viw.subviews{
                        if String(describing: btn.classForCoder) == "GMSx_MDCFloatingButton"{
                            var frame = btn.frame
                            
                            btn.frame = CGRect(x: 316, y: 0, width: 56, height: 56)
                            //USE you want frame this line
                            break
                        }
                    }
                    break
                }
            }
            break
        }
    }
}